code_ownership 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (445) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +30 -27
  3. data/bin/codeownership +1 -0
  4. data/ext/cargo-vendor/bindgen-0.72.1/.cargo-checksum.json +1 -0
  5. data/ext/cargo-vendor/bindgen-0.72.1/.cargo_vcs_info.json +6 -0
  6. data/ext/cargo-vendor/bindgen-0.72.1/Cargo.lock +485 -0
  7. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/Cargo.toml +72 -38
  8. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/Cargo.toml.orig +26 -28
  9. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/README.md +2 -2
  10. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/build.rs +2 -2
  11. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/callbacks.rs +114 -10
  12. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/clang.rs +184 -83
  13. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/bitfield_unit.rs +20 -10
  14. data/ext/cargo-vendor/bindgen-0.72.1/codegen/bitfield_unit_raw_ref_macros.rs +191 -0
  15. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/bitfield_unit_tests.rs +4 -4
  16. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/dyngen.rs +77 -20
  17. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/error.rs +2 -3
  18. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/helpers.rs +106 -66
  19. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/impl_debug.rs +32 -34
  20. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/impl_partialeq.rs +5 -5
  21. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/mod.rs +1197 -679
  22. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/postprocessing/merge_extern_blocks.rs +3 -3
  23. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/postprocessing/sort_semantically.rs +3 -3
  24. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/serialize.rs +33 -34
  25. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/struct_layout.rs +33 -26
  26. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/deps.rs +1 -1
  27. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/diagnostics.rs +22 -65
  28. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/extra_assertions.rs +1 -1
  29. data/ext/cargo-vendor/bindgen-0.72.1/features.rs +570 -0
  30. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/derive.rs +69 -75
  31. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/has_destructor.rs +5 -6
  32. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/has_float.rs +13 -17
  33. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/has_type_param_in_array.rs +22 -32
  34. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/has_vtable.rs +11 -16
  35. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/mod.rs +15 -20
  36. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/sizedness.rs +13 -21
  37. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/template_params.rs +20 -26
  38. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/annotations.rs +18 -15
  39. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/comment.rs +2 -2
  40. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/comp.rs +54 -29
  41. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/context.rs +205 -136
  42. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/derive.rs +5 -10
  43. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/dot.rs +3 -4
  44. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/enum_ty.rs +5 -7
  45. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/function.rs +27 -28
  46. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/int.rs +7 -6
  47. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/item.rs +92 -132
  48. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/item_kind.rs +7 -7
  49. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/layout.rs +11 -23
  50. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/module.rs +2 -2
  51. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/objc.rs +22 -33
  52. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/template.rs +26 -33
  53. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/traversal.rs +4 -5
  54. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/ty.rs +63 -88
  55. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/var.rs +73 -38
  56. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/lib.rs +186 -144
  57. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/log_stubs.rs +6 -0
  58. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/options/as_args.rs +1 -1
  59. data/ext/cargo-vendor/bindgen-0.72.1/options/cli.rs +1151 -0
  60. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/options/mod.rs +234 -27
  61. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/regex_set.rs +23 -28
  62. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/time.rs +4 -4
  63. data/ext/cargo-vendor/rb-sys-0.9.130/.cargo-checksum.json +1 -0
  64. data/ext/cargo-vendor/rb-sys-0.9.130/.cargo_vcs_info.json +6 -0
  65. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/Cargo.lock +23 -31
  66. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/Cargo.toml +5 -4
  67. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/Cargo.toml.orig +5 -4
  68. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/build/main.rs +7 -1
  69. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/build/stable_api_config.rs +30 -6
  70. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/build/version.rs +14 -6
  71. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/bindings.rs +1 -0
  72. data/ext/cargo-vendor/rb-sys-0.9.130/src/macros.rs +701 -0
  73. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/memory.rs +17 -6
  74. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/stable_api/compiled.c +169 -10
  75. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/stable_api/compiled.rs +209 -14
  76. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_2_7.rs +770 -0
  77. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_3_0.rs +773 -0
  78. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_3_1.rs +766 -0
  79. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_3_2.rs +764 -0
  80. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_3_3.rs +777 -0
  81. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_3_4.rs +788 -0
  82. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_4_0.rs +784 -0
  83. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/stable_api.rs +213 -9
  84. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/utils.rs +12 -7
  85. data/ext/cargo-vendor/rb-sys-build-0.9.130/.cargo-checksum.json +1 -0
  86. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/.cargo_vcs_info.json +1 -1
  87. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/Cargo.lock +19 -27
  88. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/Cargo.toml +8 -3
  89. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/Cargo.toml.orig +4 -3
  90. data/ext/cargo-vendor/rb-sys-build-0.9.130/src/bindings/gc_stress.rs +303 -0
  91. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/bindings/stable_api.rs +102 -11
  92. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/bindings.rs +19 -13
  93. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/cc.rs +1 -1
  94. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/rb_config.rs +199 -2
  95. data/ext/cargo-vendor/rb-sys-build-0.9.130/tests/fixtures/rubyopt_stdout.rb +1 -0
  96. data/ext/cargo-vendor/rb-sys-build-0.9.130/tests/rubyopt.rs +17 -0
  97. data/ext/cargo-vendor/rb-sys-env-0.2.3/.cargo-checksum.json +1 -0
  98. data/ext/cargo-vendor/rb-sys-env-0.2.3/.cargo_vcs_info.json +6 -0
  99. data/ext/cargo-vendor/rb-sys-env-0.2.3/Cargo.lock +7 -0
  100. data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/Cargo.toml +2 -2
  101. data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/Cargo.toml.orig +2 -2
  102. data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/readme.md +0 -2
  103. data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/src/ruby_version.rs +3 -1
  104. data/ext/cargo-vendor/rustc-hash-2.1.3/.cargo-checksum.json +1 -0
  105. data/ext/cargo-vendor/rustc-hash-2.1.3/.cargo_vcs_info.json +6 -0
  106. data/ext/cargo-vendor/rustc-hash-2.1.3/.github/workflows/rust.yml +73 -0
  107. data/ext/cargo-vendor/rustc-hash-2.1.3/CHANGELOG.md +41 -0
  108. data/ext/cargo-vendor/rustc-hash-2.1.3/CODE_OF_CONDUCT.md +3 -0
  109. data/ext/cargo-vendor/rustc-hash-2.1.3/Cargo.lock +90 -0
  110. data/ext/cargo-vendor/rustc-hash-2.1.3/Cargo.toml +50 -0
  111. data/ext/cargo-vendor/rustc-hash-2.1.3/Cargo.toml.orig +20 -0
  112. data/ext/cargo-vendor/rustc-hash-2.1.3/LICENSE-APACHE +176 -0
  113. data/ext/cargo-vendor/rustc-hash-2.1.3/LICENSE-MIT +23 -0
  114. data/ext/cargo-vendor/rustc-hash-2.1.3/README.md +42 -0
  115. data/ext/cargo-vendor/rustc-hash-2.1.3/src/lib.rs +472 -0
  116. data/ext/cargo-vendor/rustc-hash-2.1.3/src/random_state.rs +101 -0
  117. data/ext/cargo-vendor/rustc-hash-2.1.3/src/seeded_state.rs +76 -0
  118. data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/.cargo-checksum.json +1 -1
  119. data/ext/cargo-vendor/serde-1.0.229/.cargo_vcs_info.json +6 -0
  120. data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/Cargo.lock +13 -13
  121. data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/Cargo.toml +2 -2
  122. data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/Cargo.toml.orig +2 -2
  123. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde-1.0.229}/README.md +3 -3
  124. data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/build.rs +2 -2
  125. data/ext/cargo-vendor/{serde_core-1.0.228/src → serde-1.0.229/src/core}/de/impls.rs +4 -4
  126. data/ext/cargo-vendor/{serde_core-1.0.228/src → serde-1.0.229/src/core}/lib.rs +2 -2
  127. data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/lib.rs +3 -3
  128. data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/.cargo-checksum.json +1 -1
  129. data/ext/cargo-vendor/serde_core-1.0.229/.cargo_vcs_info.json +6 -0
  130. data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/Cargo.lock +11 -11
  131. data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/Cargo.toml +2 -2
  132. data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/Cargo.toml.orig +2 -2
  133. data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/build.rs +5 -5
  134. data/ext/cargo-vendor/{serde-1.0.228/src/core → serde_core-1.0.229/src}/de/impls.rs +4 -4
  135. data/ext/cargo-vendor/{serde-1.0.228/src/core → serde_core-1.0.229/src}/lib.rs +2 -2
  136. data/ext/cargo-vendor/serde_derive-1.0.229/.cargo-checksum.json +1 -0
  137. data/ext/cargo-vendor/serde_derive-1.0.229/.cargo_vcs_info.json +6 -0
  138. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/Cargo.lock +29 -18
  139. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/Cargo.toml +3 -3
  140. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/Cargo.toml.orig +2 -2
  141. data/ext/cargo-vendor/{serde-1.0.228 → serde_derive-1.0.229}/README.md +3 -3
  142. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/bound.rs +80 -59
  143. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/enum_adjacently.rs +46 -45
  144. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/enum_externally.rs +3 -2
  145. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de.rs +10 -7
  146. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/ast.rs +15 -8
  147. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/attr.rs +18 -31
  148. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/ctxt.rs +3 -4
  149. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/receiver.rs +2 -2
  150. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/lib.rs +1 -1
  151. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/pretend.rs +7 -7
  152. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/ser.rs +94 -94
  153. data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/.cargo-checksum.json +1 -1
  154. data/ext/cargo-vendor/serde_magnus-0.11.0/.cargo_vcs_info.json +6 -0
  155. data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/Cargo.lock +71 -73
  156. data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/Cargo.toml +2 -2
  157. data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/Cargo.toml.orig +2 -2
  158. data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/README.md +1 -1
  159. data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/deserializer.rs +2 -2
  160. data/ext/cargo-vendor/syn-3.0.9/.cargo-checksum.json +1 -0
  161. data/ext/cargo-vendor/syn-3.0.9/.cargo_vcs_info.json +6 -0
  162. data/ext/cargo-vendor/syn-3.0.9/Cargo.lock +1948 -0
  163. data/ext/cargo-vendor/syn-3.0.9/Cargo.toml +268 -0
  164. data/ext/cargo-vendor/syn-3.0.9/Cargo.toml.orig +95 -0
  165. data/ext/cargo-vendor/{lazycell-1.3.0 → syn-3.0.9}/LICENSE-APACHE +0 -25
  166. data/ext/cargo-vendor/syn-3.0.9/README.md +297 -0
  167. data/ext/cargo-vendor/syn-3.0.9/benches/file.rs +59 -0
  168. data/ext/cargo-vendor/syn-3.0.9/benches/rust.rs +189 -0
  169. data/ext/cargo-vendor/syn-3.0.9/src/attr.rs +841 -0
  170. data/ext/cargo-vendor/syn-3.0.9/src/bigint.rs +68 -0
  171. data/ext/cargo-vendor/syn-3.0.9/src/buffer.rs +462 -0
  172. data/ext/cargo-vendor/syn-3.0.9/src/classify.rs +311 -0
  173. data/ext/cargo-vendor/syn-3.0.9/src/custom_keyword.rs +260 -0
  174. data/ext/cargo-vendor/syn-3.0.9/src/custom_punctuation.rs +305 -0
  175. data/ext/cargo-vendor/syn-3.0.9/src/data.rs +489 -0
  176. data/ext/cargo-vendor/syn-3.0.9/src/derive.rs +260 -0
  177. data/ext/cargo-vendor/syn-3.0.9/src/discouraged.rs +233 -0
  178. data/ext/cargo-vendor/syn-3.0.9/src/drops.rs +58 -0
  179. data/ext/cargo-vendor/syn-3.0.9/src/error.rs +552 -0
  180. data/ext/cargo-vendor/syn-3.0.9/src/export.rs +73 -0
  181. data/ext/cargo-vendor/syn-3.0.9/src/expr.rs +4249 -0
  182. data/ext/cargo-vendor/syn-3.0.9/src/ext.rs +180 -0
  183. data/ext/cargo-vendor/syn-3.0.9/src/file.rs +136 -0
  184. data/ext/cargo-vendor/syn-3.0.9/src/fixup.rs +773 -0
  185. data/ext/cargo-vendor/syn-3.0.9/src/gen/clone.rs +2394 -0
  186. data/ext/cargo-vendor/syn-3.0.9/src/gen/debug.rs +3399 -0
  187. data/ext/cargo-vendor/syn-3.0.9/src/gen/eq.rs +2459 -0
  188. data/ext/cargo-vendor/syn-3.0.9/src/gen/fold.rs +3934 -0
  189. data/ext/cargo-vendor/syn-3.0.9/src/gen/hash.rs +3040 -0
  190. data/ext/cargo-vendor/syn-3.0.9/src/gen/token.css +744 -0
  191. data/ext/cargo-vendor/syn-3.0.9/src/gen/visit.rs +4037 -0
  192. data/ext/cargo-vendor/syn-3.0.9/src/gen/visit_mut.rs +3824 -0
  193. data/ext/cargo-vendor/syn-3.0.9/src/generics.rs +1490 -0
  194. data/ext/cargo-vendor/syn-3.0.9/src/group.rs +294 -0
  195. data/ext/cargo-vendor/syn-3.0.9/src/ident.rs +109 -0
  196. data/ext/cargo-vendor/syn-3.0.9/src/item.rs +3923 -0
  197. data/ext/cargo-vendor/syn-3.0.9/src/lib.rs +1132 -0
  198. data/ext/cargo-vendor/syn-3.0.9/src/lifetime.rs +193 -0
  199. data/ext/cargo-vendor/syn-3.0.9/src/lit.rs +1881 -0
  200. data/ext/cargo-vendor/syn-3.0.9/src/lookahead.rs +350 -0
  201. data/ext/cargo-vendor/syn-3.0.9/src/mac.rs +225 -0
  202. data/ext/cargo-vendor/syn-3.0.9/src/macros.rs +151 -0
  203. data/ext/cargo-vendor/syn-3.0.9/src/meta.rs +427 -0
  204. data/ext/cargo-vendor/syn-3.0.9/src/op.rs +219 -0
  205. data/ext/cargo-vendor/syn-3.0.9/src/parse.rs +1420 -0
  206. data/ext/cargo-vendor/syn-3.0.9/src/parse_macro_input.rs +128 -0
  207. data/ext/cargo-vendor/syn-3.0.9/src/parse_quote.rs +261 -0
  208. data/ext/cargo-vendor/syn-3.0.9/src/pat.rs +994 -0
  209. data/ext/cargo-vendor/syn-3.0.9/src/path.rs +972 -0
  210. data/ext/cargo-vendor/syn-3.0.9/src/precedence.rs +210 -0
  211. data/ext/cargo-vendor/syn-3.0.9/src/print.rs +16 -0
  212. data/ext/cargo-vendor/syn-3.0.9/src/punctuated.rs +1200 -0
  213. data/ext/cargo-vendor/syn-3.0.9/src/restriction.rs +160 -0
  214. data/ext/cargo-vendor/syn-3.0.9/src/scan_expr.rs +270 -0
  215. data/ext/cargo-vendor/syn-3.0.9/src/sealed.rs +4 -0
  216. data/ext/cargo-vendor/syn-3.0.9/src/span.rs +63 -0
  217. data/ext/cargo-vendor/syn-3.0.9/src/spanned.rs +118 -0
  218. data/ext/cargo-vendor/syn-3.0.9/src/stmt.rs +536 -0
  219. data/ext/cargo-vendor/syn-3.0.9/src/thread.rs +60 -0
  220. data/ext/cargo-vendor/syn-3.0.9/src/token.rs +1103 -0
  221. data/ext/cargo-vendor/syn-3.0.9/src/tt.rs +97 -0
  222. data/ext/cargo-vendor/syn-3.0.9/src/ty.rs +1347 -0
  223. data/ext/cargo-vendor/syn-3.0.9/src/verbatim.rs +32 -0
  224. data/ext/cargo-vendor/syn-3.0.9/src/whitespace.rs +65 -0
  225. data/ext/cargo-vendor/syn-3.0.9/tests/common/eq.rs +939 -0
  226. data/ext/cargo-vendor/syn-3.0.9/tests/common/mod.rs +6 -0
  227. data/ext/cargo-vendor/syn-3.0.9/tests/common/parse.rs +51 -0
  228. data/ext/cargo-vendor/syn-3.0.9/tests/common/visit.rs +119 -0
  229. data/ext/cargo-vendor/syn-3.0.9/tests/debug/gen.rs +5394 -0
  230. data/ext/cargo-vendor/syn-3.0.9/tests/debug/mod.rs +147 -0
  231. data/ext/cargo-vendor/syn-3.0.9/tests/macros/mod.rs +7 -0
  232. data/ext/cargo-vendor/syn-3.0.9/tests/regression/issue1108.rs +5 -0
  233. data/ext/cargo-vendor/syn-3.0.9/tests/regression/issue1235.rs +32 -0
  234. data/ext/cargo-vendor/syn-3.0.9/tests/regression.rs +5 -0
  235. data/ext/cargo-vendor/syn-3.0.9/tests/repo/mod.rs +789 -0
  236. data/ext/cargo-vendor/syn-3.0.9/tests/repo/progress.rs +37 -0
  237. data/ext/cargo-vendor/syn-3.0.9/tests/snapshot/mod.rs +68 -0
  238. data/ext/cargo-vendor/syn-3.0.9/tests/test_attribute.rs +231 -0
  239. data/ext/cargo-vendor/syn-3.0.9/tests/test_derive_input.rs +801 -0
  240. data/ext/cargo-vendor/syn-3.0.9/tests/test_expr.rs +1721 -0
  241. data/ext/cargo-vendor/syn-3.0.9/tests/test_generics.rs +363 -0
  242. data/ext/cargo-vendor/syn-3.0.9/tests/test_grouping.rs +59 -0
  243. data/ext/cargo-vendor/syn-3.0.9/tests/test_ident.rs +87 -0
  244. data/ext/cargo-vendor/syn-3.0.9/tests/test_item.rs +374 -0
  245. data/ext/cargo-vendor/syn-3.0.9/tests/test_lit.rs +335 -0
  246. data/ext/cargo-vendor/syn-3.0.9/tests/test_meta.rs +180 -0
  247. data/ext/cargo-vendor/syn-3.0.9/tests/test_parse_buffer.rs +104 -0
  248. data/ext/cargo-vendor/syn-3.0.9/tests/test_parse_quote.rs +175 -0
  249. data/ext/cargo-vendor/syn-3.0.9/tests/test_parse_stream.rs +187 -0
  250. data/ext/cargo-vendor/syn-3.0.9/tests/test_pat.rs +158 -0
  251. data/ext/cargo-vendor/syn-3.0.9/tests/test_path.rs +117 -0
  252. data/ext/cargo-vendor/syn-3.0.9/tests/test_precedence.rs +560 -0
  253. data/ext/cargo-vendor/syn-3.0.9/tests/test_punctuated.rs +92 -0
  254. data/ext/cargo-vendor/syn-3.0.9/tests/test_receiver.rs +275 -0
  255. data/ext/cargo-vendor/syn-3.0.9/tests/test_round_trip.rs +226 -0
  256. data/ext/cargo-vendor/syn-3.0.9/tests/test_shebang.rs +77 -0
  257. data/ext/cargo-vendor/syn-3.0.9/tests/test_size.rs +54 -0
  258. data/ext/cargo-vendor/syn-3.0.9/tests/test_stmt.rs +378 -0
  259. data/ext/cargo-vendor/syn-3.0.9/tests/test_token_trees.rs +38 -0
  260. data/ext/cargo-vendor/syn-3.0.9/tests/test_ty.rs +479 -0
  261. data/ext/cargo-vendor/syn-3.0.9/tests/test_unparenthesize.rs +71 -0
  262. data/ext/cargo-vendor/syn-3.0.9/tests/test_visibility.rs +193 -0
  263. data/ext/cargo-vendor/syn-3.0.9/tests/zzz_stable.rs +33 -0
  264. data/ext/code_ownership/Cargo.toml +1 -1
  265. data/ext/code_ownership/src/lib.rs +2 -2
  266. data/lib/code_ownership/version.rb +1 -1
  267. data/lib/code_ownership.rb +1 -1
  268. metadata +400 -293
  269. data/ext/cargo-vendor/bindgen-0.69.5/.cargo-checksum.json +0 -1
  270. data/ext/cargo-vendor/bindgen-0.69.5/.cargo_vcs_info.json +0 -6
  271. data/ext/cargo-vendor/bindgen-0.69.5/features.rs +0 -296
  272. data/ext/cargo-vendor/lazycell-1.3.0/.cargo-checksum.json +0 -1
  273. data/ext/cargo-vendor/lazycell-1.3.0/.cargo_vcs_info.json +0 -5
  274. data/ext/cargo-vendor/lazycell-1.3.0/CHANGELOG.md +0 -197
  275. data/ext/cargo-vendor/lazycell-1.3.0/Cargo.toml +0 -34
  276. data/ext/cargo-vendor/lazycell-1.3.0/Cargo.toml.orig +0 -27
  277. data/ext/cargo-vendor/lazycell-1.3.0/LICENSE-MIT +0 -26
  278. data/ext/cargo-vendor/lazycell-1.3.0/README.md +0 -73
  279. data/ext/cargo-vendor/lazycell-1.3.0/src/lib.rs +0 -680
  280. data/ext/cargo-vendor/lazycell-1.3.0/src/serde_impl.rs +0 -86
  281. data/ext/cargo-vendor/rb-sys-0.9.117/.cargo-checksum.json +0 -1
  282. data/ext/cargo-vendor/rb-sys-0.9.117/.cargo_vcs_info.json +0 -6
  283. data/ext/cargo-vendor/rb-sys-0.9.117/src/macros.rs +0 -371
  284. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_2_6.rs +0 -324
  285. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_2_7.rs +0 -324
  286. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_3_0.rs +0 -332
  287. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_3_1.rs +0 -325
  288. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_3_2.rs +0 -323
  289. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_3_3.rs +0 -339
  290. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_3_4.rs +0 -339
  291. data/ext/cargo-vendor/rb-sys-build-0.9.117/.cargo-checksum.json +0 -1
  292. data/ext/cargo-vendor/rb-sys-env-0.2.2/.cargo-checksum.json +0 -1
  293. data/ext/cargo-vendor/rb-sys-env-0.2.2/.cargo_vcs_info.json +0 -6
  294. data/ext/cargo-vendor/rustc-hash-1.1.0/.cargo-checksum.json +0 -1
  295. data/ext/cargo-vendor/rustc-hash-1.1.0/.cargo_vcs_info.json +0 -5
  296. data/ext/cargo-vendor/rustc-hash-1.1.0/CODE_OF_CONDUCT.md +0 -40
  297. data/ext/cargo-vendor/rustc-hash-1.1.0/Cargo.toml +0 -25
  298. data/ext/cargo-vendor/rustc-hash-1.1.0/Cargo.toml.orig +0 -13
  299. data/ext/cargo-vendor/rustc-hash-1.1.0/LICENSE-APACHE +0 -201
  300. data/ext/cargo-vendor/rustc-hash-1.1.0/README.md +0 -38
  301. data/ext/cargo-vendor/rustc-hash-1.1.0/src/lib.rs +0 -148
  302. data/ext/cargo-vendor/serde-1.0.228/.cargo_vcs_info.json +0 -6
  303. data/ext/cargo-vendor/serde_core-1.0.228/.cargo_vcs_info.json +0 -6
  304. data/ext/cargo-vendor/serde_derive-1.0.228/.cargo-checksum.json +0 -1
  305. data/ext/cargo-vendor/serde_derive-1.0.228/.cargo_vcs_info.json +0 -6
  306. data/ext/cargo-vendor/serde_magnus-0.10.0/.cargo_vcs_info.json +0 -6
  307. /data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/LICENSE +0 -0
  308. /data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/postprocessing/mod.rs +0 -0
  309. /data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/mod.rs +0 -0
  310. /data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/options/helpers.rs +0 -0
  311. /data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/parse.rs +0 -0
  312. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/LICENSE-APACHE +0 -0
  313. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/LICENSE-MIT +0 -0
  314. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/bin/release.sh +0 -0
  315. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/build/features.rs +0 -0
  316. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/readme.md +0 -0
  317. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/hidden.rs +0 -0
  318. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/lib.rs +0 -0
  319. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/ruby_abi_version.rs +0 -0
  320. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/special_consts.rs +0 -0
  321. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/symbol.rs +0 -0
  322. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/tracking_allocator.rs +0 -0
  323. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/value_type.rs +0 -0
  324. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/LICENSE-APACHE +0 -0
  325. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/LICENSE-MIT +0 -0
  326. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/bindings/sanitizer.rs +0 -0
  327. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/bindings/wrapper.h +0 -0
  328. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/lib.rs +0 -0
  329. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/rb_config/flags.rs +0 -0
  330. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/rb_config/library.rs +0 -0
  331. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/rb_config/search_path.rs +0 -0
  332. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/utils.rs +0 -0
  333. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/LICENSE-APACHE +0 -0
  334. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/LICENSE-MIT +0 -0
  335. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/build.rs +0 -0
  336. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/src/defines.rs +0 -0
  337. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/src/lib.rs +0 -0
  338. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/src/rb_env.rs +0 -0
  339. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/src/utils.rs +0 -0
  340. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/LICENSE-APACHE +0 -0
  341. /data/ext/cargo-vendor/{rustc-hash-1.1.0 → serde-1.0.229}/LICENSE-MIT +0 -0
  342. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/crates-io.md +0 -0
  343. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/crate_root.rs +0 -0
  344. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/de/ignored_any.rs +0 -0
  345. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/de/mod.rs +0 -0
  346. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/de/value.rs +0 -0
  347. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/format.rs +0 -0
  348. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/macros.rs +0 -0
  349. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/private/content.rs +0 -0
  350. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/private/doc.rs +0 -0
  351. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/private/mod.rs +0 -0
  352. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/private/seed.rs +0 -0
  353. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/private/size_hint.rs +0 -0
  354. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/private/string.rs +0 -0
  355. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/ser/fmt.rs +0 -0
  356. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/ser/impls.rs +0 -0
  357. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/ser/impossible.rs +0 -0
  358. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/ser/mod.rs +0 -0
  359. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/std_error.rs +0 -0
  360. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/integer128.rs +0 -0
  361. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/private/de.rs +0 -0
  362. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/private/mod.rs +0 -0
  363. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/private/ser.rs +0 -0
  364. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/LICENSE-APACHE +0 -0
  365. /data/ext/cargo-vendor/{serde-1.0.228 → serde_core-1.0.229}/LICENSE-MIT +0 -0
  366. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/README.md +0 -0
  367. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/crate_root.rs +0 -0
  368. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/de/ignored_any.rs +0 -0
  369. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/de/mod.rs +0 -0
  370. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/de/value.rs +0 -0
  371. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/format.rs +0 -0
  372. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/macros.rs +0 -0
  373. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/private/content.rs +0 -0
  374. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/private/doc.rs +0 -0
  375. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/private/mod.rs +0 -0
  376. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/private/seed.rs +0 -0
  377. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/private/size_hint.rs +0 -0
  378. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/private/string.rs +0 -0
  379. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/ser/fmt.rs +0 -0
  380. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/ser/impls.rs +0 -0
  381. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/ser/impossible.rs +0 -0
  382. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/ser/mod.rs +0 -0
  383. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/std_error.rs +0 -0
  384. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/LICENSE-APACHE +0 -0
  385. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_derive-1.0.229}/LICENSE-MIT +0 -0
  386. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/crates-io.md +0 -0
  387. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/enum_.rs +0 -0
  388. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/enum_internally.rs +0 -0
  389. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/enum_untagged.rs +0 -0
  390. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/identifier.rs +0 -0
  391. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/struct_.rs +0 -0
  392. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/tuple.rs +0 -0
  393. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/unit.rs +0 -0
  394. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/deprecated.rs +0 -0
  395. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/dummy.rs +0 -0
  396. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/fragment.rs +0 -0
  397. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/case.rs +0 -0
  398. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/check.rs +0 -0
  399. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/mod.rs +0 -0
  400. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/name.rs +0 -0
  401. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/respan.rs +0 -0
  402. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/symbol.rs +0 -0
  403. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/this.rs +0 -0
  404. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/LICENSE +0 -0
  405. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/array_deserializer.rs +0 -0
  406. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/array_enumerator.rs +0 -0
  407. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/enum_deserializer.rs +0 -0
  408. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/hash_deserializer.rs +0 -0
  409. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/mod.rs +0 -0
  410. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/variant_deserializer.rs +0 -0
  411. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/error.rs +0 -0
  412. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/lib.rs +0 -0
  413. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/enums.rs +0 -0
  414. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/map_serializer.rs +0 -0
  415. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/mod.rs +0 -0
  416. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/seq_serializer.rs +0 -0
  417. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/serializer.rs +0 -0
  418. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/struct_serializer.rs +0 -0
  419. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/struct_variant_serializer.rs +0 -0
  420. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/tuple_variant_serializer.rs +0 -0
  421. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_arrays.rs +0 -0
  422. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_booleans.rs +0 -0
  423. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_enums.rs +0 -0
  424. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_floats.rs +0 -0
  425. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_integers.rs +0 -0
  426. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_maps.rs +0 -0
  427. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_options.rs +0 -0
  428. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_results.rs +0 -0
  429. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_strings.rs +0 -0
  430. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_structs.rs +0 -0
  431. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_tuples.rs +0 -0
  432. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_vecs.rs +0 -0
  433. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_arrays.rs +0 -0
  434. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_booleans.rs +0 -0
  435. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_enums.rs +0 -0
  436. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_floats.rs +0 -0
  437. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_integers.rs +0 -0
  438. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_maps.rs +0 -0
  439. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_options.rs +0 -0
  440. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_results.rs +0 -0
  441. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_strings.rs +0 -0
  442. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_structs.rs +0 -0
  443. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_tuples.rs +0 -0
  444. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_vecs.rs +0 -0
  445. /data/ext/cargo-vendor/{serde_derive-1.0.228 → syn-3.0.9}/LICENSE-MIT +0 -0
@@ -0,0 +1,472 @@
1
+ //! A speedy, non-cryptographic hashing algorithm used by `rustc`.
2
+ //!
3
+ //! # Example
4
+ //!
5
+ //! ```rust
6
+ //! # #[cfg(feature = "std")]
7
+ //! # fn main() {
8
+ //! use rustc_hash::FxHashMap;
9
+ //!
10
+ //! let mut map: FxHashMap<u32, u32> = FxHashMap::default();
11
+ //! map.insert(22, 44);
12
+ //! # }
13
+ //! # #[cfg(not(feature = "std"))]
14
+ //! # fn main() { }
15
+ //! ```
16
+
17
+ #![no_std]
18
+ #![cfg_attr(feature = "nightly", feature(const_default))]
19
+ #![cfg_attr(feature = "nightly", feature(const_trait_impl))]
20
+ #![cfg_attr(feature = "nightly", feature(derive_const))]
21
+ #![cfg_attr(feature = "nightly", feature(hasher_prefixfree_extras))]
22
+ #![allow(rustc::default_hash_types)]
23
+
24
+ #[cfg(feature = "std")]
25
+ extern crate std;
26
+
27
+ #[cfg(feature = "rand")]
28
+ extern crate rand;
29
+
30
+ #[cfg(feature = "rand")]
31
+ mod random_state;
32
+
33
+ mod seeded_state;
34
+
35
+ use core::default::Default;
36
+ use core::hash::{BuildHasher, Hasher};
37
+ #[cfg(feature = "std")]
38
+ use std::collections::{HashMap, HashSet};
39
+
40
+ /// Type alias for a hash map that uses the Fx hashing algorithm.
41
+ #[cfg(feature = "std")]
42
+ pub type FxHashMap<K, V> = HashMap<K, V, FxBuildHasher>;
43
+
44
+ /// Type alias for a hash set that uses the Fx hashing algorithm.
45
+ #[cfg(feature = "std")]
46
+ pub type FxHashSet<V> = HashSet<V, FxBuildHasher>;
47
+
48
+ #[cfg(feature = "rand")]
49
+ pub use random_state::{FxHashMapRand, FxHashSetRand, FxRandomState};
50
+
51
+ pub use seeded_state::FxSeededState;
52
+ #[cfg(feature = "std")]
53
+ pub use seeded_state::{FxHashMapSeed, FxHashSetSeed};
54
+
55
+ /// A speedy hash algorithm for use within rustc. The hashmap in liballoc
56
+ /// by default uses SipHash which isn't quite as speedy as we want. In the
57
+ /// compiler we're not really worried about DOS attempts, so we use a fast
58
+ /// non-cryptographic hash.
59
+ ///
60
+ /// The current implementation is a fast polynomial hash with a single
61
+ /// bit rotation as a finishing step designed by Orson Peters.
62
+ #[derive(Clone)]
63
+ #[cfg_attr(not(feature = "nightly"), derive(Default))]
64
+ #[cfg_attr(feature = "nightly", derive_const(Default))]
65
+ pub struct FxHasher {
66
+ hash: usize,
67
+ }
68
+
69
+ // One might view a polynomial hash
70
+ // m[0] * k + m[1] * k^2 + m[2] * k^3 + ...
71
+ // as a multilinear hash with keystream k[..]
72
+ // m[0] * k[0] + m[1] * k[1] + m[2] * k[2] + ...
73
+ // where keystream k just happens to be generated using a multiplicative
74
+ // congruential pseudorandom number generator (MCG). For that reason we chose a
75
+ // constant that was found to be good for a MCG in:
76
+ // "Computationally Easy, Spectrally Good Multipliers for Congruential
77
+ // Pseudorandom Number Generators" by Guy Steele and Sebastiano Vigna.
78
+ #[cfg(target_pointer_width = "64")]
79
+ const K: usize = 0xf1357aea2e62a9c5;
80
+ #[cfg(target_pointer_width = "32")]
81
+ const K: usize = 0x93d765dd;
82
+
83
+ impl FxHasher {
84
+ /// Creates a `fx` hasher with a given seed.
85
+ pub const fn with_seed(seed: usize) -> FxHasher {
86
+ FxHasher { hash: seed }
87
+ }
88
+
89
+ /// Creates a default `fx` hasher.
90
+ pub const fn default() -> FxHasher {
91
+ FxHasher { hash: 0 }
92
+ }
93
+ }
94
+
95
+ impl FxHasher {
96
+ #[inline]
97
+ fn add_to_hash(&mut self, i: usize) {
98
+ self.hash = self.hash.wrapping_add(i).wrapping_mul(K);
99
+ }
100
+ }
101
+
102
+ impl Hasher for FxHasher {
103
+ #[inline]
104
+ fn write(&mut self, bytes: &[u8]) {
105
+ // Compress the byte string to a single u64 and add to our hash.
106
+ self.write_u64(hash_bytes(bytes));
107
+ }
108
+
109
+ #[inline]
110
+ fn write_u8(&mut self, i: u8) {
111
+ self.add_to_hash(i as usize);
112
+ }
113
+
114
+ #[inline]
115
+ fn write_u16(&mut self, i: u16) {
116
+ self.add_to_hash(i as usize);
117
+ }
118
+
119
+ #[inline]
120
+ fn write_u32(&mut self, i: u32) {
121
+ self.add_to_hash(i as usize);
122
+ }
123
+
124
+ #[inline]
125
+ fn write_u64(&mut self, i: u64) {
126
+ self.add_to_hash(i as usize);
127
+ #[cfg(target_pointer_width = "32")]
128
+ self.add_to_hash((i >> 32) as usize);
129
+ }
130
+
131
+ #[inline]
132
+ fn write_u128(&mut self, i: u128) {
133
+ self.add_to_hash(i as usize);
134
+ #[cfg(target_pointer_width = "32")]
135
+ self.add_to_hash((i >> 32) as usize);
136
+ self.add_to_hash((i >> 64) as usize);
137
+ #[cfg(target_pointer_width = "32")]
138
+ self.add_to_hash((i >> 96) as usize);
139
+ }
140
+
141
+ #[inline]
142
+ fn write_usize(&mut self, i: usize) {
143
+ self.add_to_hash(i);
144
+ }
145
+
146
+ #[cfg(feature = "nightly")]
147
+ #[inline]
148
+ fn write_length_prefix(&mut self, _len: usize) {
149
+ // Most cases will specialize hash_slice to call write(), which encodes
150
+ // the length already in a more efficient manner than we could here. For
151
+ // HashDoS-resistance you would still need to include this for the
152
+ // non-slice collection hashes, but for the purposes of rustc we do not
153
+ // care and do not wish to pay the performance penalty of mixing in len
154
+ // for those collections.
155
+ }
156
+
157
+ #[cfg(feature = "nightly")]
158
+ #[inline]
159
+ fn write_str(&mut self, s: &str) {
160
+ // Similarly here, write already encodes the length, so nothing special
161
+ // is needed.
162
+ self.write(s.as_bytes())
163
+ }
164
+
165
+ #[inline]
166
+ fn finish(&self) -> u64 {
167
+ // Since we used a multiplicative hash our top bits have the most
168
+ // entropy (with the top bit having the most, decreasing as you go).
169
+ // As most hash table implementations (including hashbrown) compute
170
+ // the bucket index from the bottom bits we want to move bits from the
171
+ // top to the bottom. Ideally we'd rotate left by exactly the hash table
172
+ // size, but as we don't know this we'll choose 26 bits, giving decent
173
+ // entropy up until 2^26 table sizes. On 32-bit hosts we'll dial it
174
+ // back down a bit to 15 bits.
175
+
176
+ #[cfg(target_pointer_width = "64")]
177
+ const ROTATE: u32 = 26;
178
+ #[cfg(target_pointer_width = "32")]
179
+ const ROTATE: u32 = 15;
180
+
181
+ self.hash.rotate_left(ROTATE) as u64
182
+
183
+ // A bit reversal would be even better, except hashbrown also expects
184
+ // good entropy in the top 7 bits and a bit reverse would fill those
185
+ // bits with low entropy. More importantly, bit reversals are very slow
186
+ // on x86-64. A byte reversal is relatively fast, but still has a 2
187
+ // cycle latency on x86-64 compared to the 1 cycle latency of a rotate.
188
+ // It also suffers from the hashbrown-top-7-bit-issue.
189
+ }
190
+ }
191
+
192
+ // Nothing special, digits of pi.
193
+ const SEED1: u64 = 0x243f6a8885a308d3;
194
+ const SEED2: u64 = 0x13198a2e03707344;
195
+ const PREVENT_TRIVIAL_ZERO_COLLAPSE: u64 = 0xa4093822299f31d0;
196
+
197
+ #[inline]
198
+ fn multiply_mix(x: u64, y: u64) -> u64 {
199
+ // The following code path is only fast if 64-bit to 128-bit widening
200
+ // multiplication is supported by the architecture. Most 64-bit
201
+ // architectures except SPARC64 and Wasm64 support it. However, the target
202
+ // pointer width doesn't always indicate that we are dealing with a 64-bit
203
+ // architecture, as there are ABIs that reduce the pointer width, especially
204
+ // on AArch64 and x86-64. WebAssembly (regardless of pointer width) supports
205
+ // 64-bit to 128-bit widening multiplication with the `wide-arithmetic`
206
+ // proposal.
207
+ if cfg!(any(
208
+ all(
209
+ target_pointer_width = "64",
210
+ not(any(target_arch = "sparc64", target_arch = "wasm64")),
211
+ ),
212
+ target_arch = "aarch64",
213
+ target_arch = "x86_64",
214
+ all(target_family = "wasm", target_feature = "wide-arithmetic"),
215
+ )) {
216
+ // We compute the full u64 x u64 -> u128 product, this is a single mul
217
+ // instruction on x86-64, one mul plus one mulhi on ARM64.
218
+ let full = (x as u128).wrapping_mul(y as u128);
219
+ let lo = full as u64;
220
+ let hi = (full >> 64) as u64;
221
+
222
+ // The middle bits of the full product fluctuate the most with small
223
+ // changes in the input. This is the top bits of lo and the bottom bits
224
+ // of hi. We can thus make the entire output fluctuate with small
225
+ // changes to the input by XOR'ing these two halves.
226
+ lo ^ hi
227
+
228
+ // Unfortunately both 2^64 + 1 and 2^64 - 1 have small prime factors,
229
+ // otherwise combining with + or - could result in a really strong hash, as:
230
+ // x * y = 2^64 * hi + lo = (-1) * hi + lo = lo - hi, (mod 2^64 + 1)
231
+ // x * y = 2^64 * hi + lo = 1 * hi + lo = lo + hi, (mod 2^64 - 1)
232
+ // Multiplicative hashing is universal in a field (like mod p).
233
+ } else {
234
+ // u64 x u64 -> u128 product is prohibitively expensive on 32-bit.
235
+ // Decompose into 32-bit parts.
236
+ let lx = x as u32;
237
+ let ly = y as u32;
238
+ let hx = (x >> 32) as u32;
239
+ let hy = (y >> 32) as u32;
240
+
241
+ // u32 x u32 -> u64 the low bits of one with the high bits of the other.
242
+ let afull = (lx as u64).wrapping_mul(hy as u64);
243
+ let bfull = (hx as u64).wrapping_mul(ly as u64);
244
+
245
+ // Combine, swapping low/high of one of them so the upper bits of the
246
+ // product of one combine with the lower bits of the other.
247
+ afull ^ bfull.rotate_right(32)
248
+ }
249
+ }
250
+
251
+ /// A wyhash-inspired non-collision-resistant hash for strings/slices designed
252
+ /// by Orson Peters, with a focus on small strings and small codesize.
253
+ ///
254
+ /// The 64-bit version of this hash passes the SMHasher3 test suite on the full
255
+ /// 64-bit output, that is, f(hash_bytes(b) ^ f(seed)) for some good avalanching
256
+ /// permutation f() passed all tests with zero failures. When using the 32-bit
257
+ /// version of multiply_mix this hash has a few non-catastrophic failures where
258
+ /// there are a handful more collisions than an optimal hash would give.
259
+ ///
260
+ /// We don't bother avalanching here as we'll feed this hash into a
261
+ /// multiplication after which we take the high bits, which avalanches for us.
262
+ #[inline]
263
+ fn hash_bytes(bytes: &[u8]) -> u64 {
264
+ let len = bytes.len();
265
+ let mut s0 = SEED1;
266
+ let mut s1 = SEED2;
267
+
268
+ if len <= 16 {
269
+ // XOR the input into s0, s1.
270
+ if len >= 8 {
271
+ s0 ^= u64::from_le_bytes(bytes[0..8].try_into().unwrap());
272
+ s1 ^= u64::from_le_bytes(bytes[len - 8..].try_into().unwrap());
273
+ } else if len >= 4 {
274
+ s0 ^= u32::from_le_bytes(bytes[0..4].try_into().unwrap()) as u64;
275
+ s1 ^= u32::from_le_bytes(bytes[len - 4..].try_into().unwrap()) as u64;
276
+ } else if len > 0 {
277
+ let lo = bytes[0];
278
+ let mid = bytes[len / 2];
279
+ let hi = bytes[len - 1];
280
+ s0 ^= lo as u64;
281
+ s1 ^= ((hi as u64) << 8) | mid as u64;
282
+ }
283
+ } else {
284
+ // Handle bulk (can partially overlap with suffix).
285
+ let mut bulk = &bytes[..(len - 1)];
286
+ while let Some((chunk, rest)) = bulk.split_first_chunk::<16>() {
287
+ let x = u64::from_le_bytes((&chunk[..8]).try_into().unwrap());
288
+ let y = u64::from_le_bytes((&chunk[8..]).try_into().unwrap());
289
+
290
+ // Replace s1 with a mix of s0, x, and y, and s0 with s1.
291
+ // This ensures the compiler can unroll this loop into two
292
+ // independent streams, one operating on s0, the other on s1.
293
+ //
294
+ // Since zeroes are a common input we prevent an immediate trivial
295
+ // collapse of the hash function by XOR'ing a constant with y.
296
+ let t = multiply_mix(s0 ^ x, PREVENT_TRIVIAL_ZERO_COLLAPSE ^ y);
297
+ s0 = s1;
298
+ s1 = t;
299
+ bulk = rest;
300
+ }
301
+
302
+ let suffix = &bytes[len - 16..];
303
+ s0 ^= u64::from_le_bytes(suffix[0..8].try_into().unwrap());
304
+ s1 ^= u64::from_le_bytes(suffix[8..16].try_into().unwrap());
305
+ }
306
+
307
+ multiply_mix(s0, s1) ^ (len as u64)
308
+ }
309
+
310
+ /// An implementation of [`BuildHasher`] that produces [`FxHasher`]s.
311
+ ///
312
+ /// ```
313
+ /// use std::hash::BuildHasher;
314
+ /// use rustc_hash::FxBuildHasher;
315
+ /// assert_ne!(FxBuildHasher.hash_one(1), FxBuildHasher.hash_one(2));
316
+ /// ```
317
+ #[derive(Copy, Clone)]
318
+ #[cfg_attr(not(feature = "nightly"), derive(Default))]
319
+ #[cfg_attr(feature = "nightly", derive_const(Default))]
320
+ pub struct FxBuildHasher;
321
+
322
+ impl BuildHasher for FxBuildHasher {
323
+ type Hasher = FxHasher;
324
+ fn build_hasher(&self) -> FxHasher {
325
+ FxHasher::default()
326
+ }
327
+ }
328
+
329
+ #[cfg(test)]
330
+ mod tests {
331
+ #[cfg(not(any(target_pointer_width = "64", target_pointer_width = "32")))]
332
+ compile_error!("The test suite only supports 64 bit and 32 bit usize");
333
+
334
+ use crate::{FxBuildHasher, FxHasher};
335
+ use core::hash::{BuildHasher, Hash, Hasher};
336
+
337
+ macro_rules! test_hash {
338
+ (
339
+ $(
340
+ hash($value:expr) == $result:expr,
341
+ )*
342
+ ) => {
343
+ $(
344
+ assert_eq!(FxBuildHasher.hash_one($value), $result);
345
+ )*
346
+ };
347
+ }
348
+
349
+ const B32: bool = cfg!(target_pointer_width = "32");
350
+
351
+ #[test]
352
+ fn unsigned() {
353
+ test_hash! {
354
+ hash(0_u8) == 0,
355
+ hash(1_u8) == if B32 { 3001993707 } else { 12157901119326311915 },
356
+ hash(100_u8) == if B32 { 3844759569 } else { 16751747135202103309 },
357
+ hash(u8::MAX) == if B32 { 999399879 } else { 1211781028898739645 },
358
+
359
+ hash(0_u16) == 0,
360
+ hash(1_u16) == if B32 { 3001993707 } else { 12157901119326311915 },
361
+ hash(100_u16) == if B32 { 3844759569 } else { 16751747135202103309 },
362
+ hash(u16::MAX) == if B32 { 3440503042 } else { 16279819243059860173 },
363
+
364
+ hash(0_u32) == 0,
365
+ hash(1_u32) == if B32 { 3001993707 } else { 12157901119326311915 },
366
+ hash(100_u32) == if B32 { 3844759569 } else { 16751747135202103309 },
367
+ hash(u32::MAX) == if B32 { 1293006356 } else { 7729994835221066939 },
368
+
369
+ hash(0_u64) == 0,
370
+ hash(1_u64) == if B32 { 275023839 } else { 12157901119326311915 },
371
+ hash(100_u64) == if B32 { 1732383522 } else { 16751747135202103309 },
372
+ hash(u64::MAX) == if B32 { 1017982517 } else { 6288842954450348564 },
373
+
374
+ hash(0_u128) == 0,
375
+ hash(1_u128) == if B32 { 1860738631 } else { 13032756267696824044 },
376
+ hash(100_u128) == if B32 { 1389515751 } else { 12003541609544029302 },
377
+ hash(u128::MAX) == if B32 { 2156022013 } else { 11702830760530184999 },
378
+
379
+ hash(0_usize) == 0,
380
+ hash(1_usize) == if B32 { 3001993707 } else { 12157901119326311915 },
381
+ hash(100_usize) == if B32 { 3844759569 } else { 16751747135202103309 },
382
+ hash(usize::MAX) == if B32 { 1293006356 } else { 6288842954450348564 },
383
+ }
384
+ }
385
+
386
+ #[test]
387
+ fn signed() {
388
+ test_hash! {
389
+ hash(i8::MIN) == if B32 { 2000713177 } else { 6684841074112525780 },
390
+ hash(0_i8) == 0,
391
+ hash(1_i8) == if B32 { 3001993707 } else { 12157901119326311915 },
392
+ hash(100_i8) == if B32 { 3844759569 } else { 16751747135202103309 },
393
+ hash(i8::MAX) == if B32 { 3293686765 } else { 12973684028562874344 },
394
+
395
+ hash(i16::MIN) == if B32 { 1073764727 } else { 14218860181193086044 },
396
+ hash(0_i16) == 0,
397
+ hash(1_i16) == if B32 { 3001993707 } else { 12157901119326311915 },
398
+ hash(100_i16) == if B32 { 3844759569 } else { 16751747135202103309 },
399
+ hash(i16::MAX) == if B32 { 2366738315 } else { 2060959061933882993 },
400
+
401
+ hash(i32::MIN) == if B32 { 16384 } else { 9943947977240134995 },
402
+ hash(0_i32) == 0,
403
+ hash(1_i32) == if B32 { 3001993707 } else { 12157901119326311915 },
404
+ hash(100_i32) == if B32 { 3844759569 } else { 16751747135202103309 },
405
+ hash(i32::MAX) == if B32 { 1293022740 } else { 16232790931690483559 },
406
+
407
+ hash(i64::MIN) == if B32 { 16384 } else { 33554432 },
408
+ hash(0_i64) == 0,
409
+ hash(1_i64) == if B32 { 275023839 } else { 12157901119326311915 },
410
+ hash(100_i64) == if B32 { 1732383522 } else { 16751747135202103309 },
411
+ hash(i64::MAX) == if B32 { 1017998901 } else { 6288842954483902996 },
412
+
413
+ hash(i128::MIN) == if B32 { 16384 } else { 33554432 },
414
+ hash(0_i128) == 0,
415
+ hash(1_i128) == if B32 { 1860738631 } else { 13032756267696824044 },
416
+ hash(100_i128) == if B32 { 1389515751 } else { 12003541609544029302 },
417
+ hash(i128::MAX) == if B32 { 2156005629 } else { 11702830760496630567 },
418
+
419
+ hash(isize::MIN) == if B32 { 16384 } else { 33554432 },
420
+ hash(0_isize) == 0,
421
+ hash(1_isize) == if B32 { 3001993707 } else { 12157901119326311915 },
422
+ hash(100_isize) == if B32 { 3844759569 } else { 16751747135202103309 },
423
+ hash(isize::MAX) == if B32 { 1293022740 } else { 6288842954483902996 },
424
+ }
425
+ }
426
+
427
+ // Avoid relying on any `Hash` implementations in the standard library.
428
+ struct HashBytes(&'static [u8]);
429
+ impl Hash for HashBytes {
430
+ fn hash<H: core::hash::Hasher>(&self, state: &mut H) {
431
+ state.write(self.0);
432
+ }
433
+ }
434
+
435
+ #[test]
436
+ fn bytes() {
437
+ test_hash! {
438
+ hash(HashBytes(&[])) == if B32 { 2673204745 } else { 17606491139363777937 },
439
+ hash(HashBytes(&[0])) == if B32 { 2948228584 } else { 5448590020104574886 },
440
+ hash(HashBytes(&[0, 0, 0, 0, 0, 0])) == if B32 { 3223252423 } else { 16766921560080789783 },
441
+ hash(HashBytes(&[1])) == if B32 { 2943445104 } else { 5922447956811044110 },
442
+ hash(HashBytes(&[2])) == if B32 { 1055423297 } else { 5229781508510959783 },
443
+ hash(HashBytes(b"uwu")) == if B32 { 2699662140 } else { 7168164714682931527 },
444
+ hash(HashBytes(b"These are some bytes for testing rustc_hash.")) == if B32 { 2303640537 } else { 2349210501944688211 },
445
+ }
446
+ }
447
+
448
+ #[test]
449
+ fn with_seed_actually_different() {
450
+ let seeds = [
451
+ [1, 2],
452
+ [42, 17],
453
+ [124436707, 99237],
454
+ [usize::MIN, usize::MAX],
455
+ ];
456
+
457
+ for [a_seed, b_seed] in seeds {
458
+ let a = || FxHasher::with_seed(a_seed);
459
+ let b = || FxHasher::with_seed(b_seed);
460
+
461
+ for x in u8::MIN..=u8::MAX {
462
+ let mut a = a();
463
+ let mut b = b();
464
+
465
+ x.hash(&mut a);
466
+ x.hash(&mut b);
467
+
468
+ assert_ne!(a.finish(), b.finish())
469
+ }
470
+ }
471
+ }
472
+ }
@@ -0,0 +1,101 @@
1
+ use std::collections::{HashMap, HashSet};
2
+
3
+ use crate::FxHasher;
4
+
5
+ /// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].
6
+ pub type FxHashMapRand<K, V> = HashMap<K, V, FxRandomState>;
7
+
8
+ /// Type alias for a hashmap using the `fx` hash algorithm with [`FxRandomState`].
9
+ pub type FxHashSetRand<V> = HashSet<V, FxRandomState>;
10
+
11
+ /// `FxRandomState` is an alternative state for `HashMap` types.
12
+ ///
13
+ /// A particular instance `FxRandomState` will create the same instances of
14
+ /// [`Hasher`], but the hashers created by two different `FxRandomState`
15
+ /// instances are unlikely to produce the same result for the same values.
16
+ #[derive(Clone)]
17
+ pub struct FxRandomState {
18
+ seed: usize,
19
+ }
20
+
21
+ impl FxRandomState {
22
+ /// Constructs a new `FxRandomState` that is initialized with random seed.
23
+ pub fn new() -> FxRandomState {
24
+ use rand::Rng;
25
+ use std::{cell::Cell, thread_local};
26
+
27
+ // This mirrors what `std::collections::hash_map::RandomState` does, as of 2024-01-14.
28
+ //
29
+ // Basically
30
+ // 1. Cache result of the rng in a thread local, so repeatedly
31
+ // creating maps is cheaper
32
+ // 2. Change the cached result on every creation, so maps created
33
+ // on the same thread don't have the same iteration order
34
+ thread_local!(static SEED: Cell<usize> = {
35
+ Cell::new(rand::rng().random_range(..=usize::MAX))
36
+ });
37
+
38
+ SEED.with(|seed| {
39
+ let s = seed.get();
40
+ seed.set(s.wrapping_add(1));
41
+ FxRandomState { seed: s }
42
+ })
43
+ }
44
+ }
45
+
46
+ impl core::hash::BuildHasher for FxRandomState {
47
+ type Hasher = FxHasher;
48
+
49
+ fn build_hasher(&self) -> Self::Hasher {
50
+ FxHasher::with_seed(self.seed)
51
+ }
52
+ }
53
+
54
+ impl Default for FxRandomState {
55
+ fn default() -> Self {
56
+ Self::new()
57
+ }
58
+ }
59
+
60
+ #[cfg(test)]
61
+ mod tests {
62
+ use std::thread;
63
+
64
+ use crate::FxHashMapRand;
65
+
66
+ #[test]
67
+ fn cloned_random_states_are_equal() {
68
+ let a = FxHashMapRand::<&str, u32>::default();
69
+ let b = a.clone();
70
+
71
+ assert_eq!(a.hasher().seed, b.hasher().seed);
72
+ }
73
+
74
+ #[test]
75
+ fn random_states_are_different() {
76
+ let a = FxHashMapRand::<&str, u32>::default();
77
+ let b = FxHashMapRand::<&str, u32>::default();
78
+
79
+ // That's the whole point of them being random!
80
+ //
81
+ // N.B.: `FxRandomState` uses a thread-local set to a random value and then incremented,
82
+ // which means that this is *guaranteed* to pass :>
83
+ assert_ne!(a.hasher().seed, b.hasher().seed);
84
+ }
85
+
86
+ #[test]
87
+ fn random_states_are_different_cross_thread() {
88
+ // This is similar to the test above, but uses two different threads, so they both get
89
+ // completely random, unrelated values.
90
+ //
91
+ // This means that this test is technically flaky, but the probability of it failing is
92
+ // `1 / 2.pow(bit_size_of::<usize>())`. Or 1/1.7e19 for 64 bit platforms or 1/4294967295
93
+ // for 32 bit platforms. I suppose this is acceptable.
94
+ let a = FxHashMapRand::<&str, u32>::default();
95
+ let b = thread::spawn(FxHashMapRand::<&str, u32>::default)
96
+ .join()
97
+ .unwrap();
98
+
99
+ assert_ne!(a.hasher().seed, b.hasher().seed);
100
+ }
101
+ }
@@ -0,0 +1,76 @@
1
+ use crate::FxHasher;
2
+
3
+ /// Type alias for a hashmap using the `fx` hash algorithm with [`FxSeededState`].
4
+ #[cfg(feature = "std")]
5
+ pub type FxHashMapSeed<K, V> = std::collections::HashMap<K, V, FxSeededState>;
6
+
7
+ /// Type alias for a hashmap using the `fx` hash algorithm with [`FxSeededState`].
8
+ #[cfg(feature = "std")]
9
+ pub type FxHashSetSeed<V> = std::collections::HashSet<V, FxSeededState>;
10
+
11
+ /// [`FxSeededState`] is an alternative state for `HashMap` types, allowing to use [`FxHasher`] with a set seed.
12
+ ///
13
+ /// ```
14
+ /// # use std::collections::HashMap;
15
+ /// use rustc_hash::FxSeededState;
16
+ ///
17
+ /// let mut map = HashMap::with_hasher(FxSeededState::with_seed(12));
18
+ /// map.insert(15, 610);
19
+ /// assert_eq!(map[&15], 610);
20
+ /// ```
21
+ #[derive(Clone)]
22
+ pub struct FxSeededState {
23
+ seed: usize,
24
+ }
25
+
26
+ impl FxSeededState {
27
+ /// Constructs a new `FxSeededState` that is initialized with a `seed`.
28
+ pub const fn with_seed(seed: usize) -> FxSeededState {
29
+ Self { seed }
30
+ }
31
+ }
32
+
33
+ impl core::hash::BuildHasher for FxSeededState {
34
+ type Hasher = FxHasher;
35
+
36
+ fn build_hasher(&self) -> Self::Hasher {
37
+ FxHasher::with_seed(self.seed)
38
+ }
39
+ }
40
+
41
+ #[cfg(test)]
42
+ mod tests {
43
+ use core::hash::BuildHasher;
44
+
45
+ use crate::FxSeededState;
46
+
47
+ #[test]
48
+ fn cloned_seeded_states_are_equal() {
49
+ let seed = 2;
50
+ let a = FxSeededState::with_seed(seed);
51
+ let b = a.clone();
52
+
53
+ assert_eq!(a.seed, b.seed);
54
+ assert_eq!(a.seed, seed);
55
+
56
+ assert_eq!(a.build_hasher().hash, b.build_hasher().hash);
57
+ }
58
+
59
+ #[test]
60
+ fn same_seed_produces_same_hasher() {
61
+ let seed = 1;
62
+ let a = FxSeededState::with_seed(seed);
63
+ let b = FxSeededState::with_seed(seed);
64
+
65
+ // The hashers should be the same, as they have the same seed.
66
+ assert_eq!(a.build_hasher().hash, b.build_hasher().hash);
67
+ }
68
+
69
+ #[test]
70
+ fn different_states_are_different() {
71
+ let a = FxSeededState::with_seed(1);
72
+ let b = FxSeededState::with_seed(2);
73
+
74
+ assert_ne!(a.build_hasher().hash, b.build_hasher().hash);
75
+ }
76
+ }
@@ -1 +1 @@
1
- {"$comment":"This file only protects against accidental modifications. It is not a security mechanism and does not protect against malicious changes.","files":{".cargo_vcs_info.json":"399aaf38fec4939d8009dbb5e40edd613aefad660ded89ad5040a22b1f7140f9","Cargo.lock":"4c5bf070ad8c1c8beee68d9c477e909332e942aac79cfdc8a6b1f0de572c9073","Cargo.toml":"d7fc24e39691a0831eaa0eac677b46ecbae407a40fa816b904759822d10f42e8","Cargo.toml.orig":"0b7df7944cba2a0646daa431efdc9f8b200bc6beb586cd71e302a102d17c4c60","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"d40eb47c3c6e3780359df6fe40d40a35725c843df0e3b845e10ecf2a15048664","build.rs":"c99c25e1a11f3e51b61dd8c25bdbfbd090e43e5f1f2014f41f28e214dd8310d5","crates-io.md":"00b72e63d4f3393e28f9a219c8cb8c122013d82f0d10d6d551e239b13c5ba9e4","src/core/crate_root.rs":"157ca402e23c32f11a4f1797c81afb5e9f08df96768012cf3e3199153aafb2dd","src/core/de/ignored_any.rs":"6480f2b2a83dc4764d01b2eec7309729eef2492eede2e5ee98d23a60b05198eb","src/core/de/impls.rs":"9fb7a0322af51971fe1fa8f5b56c7ca3716622a6e9127b86bddfc0742c11383c","src/core/de/mod.rs":"5ec8602d593915e0cf480b0ce67b02f6ab066dac34725237d2c7b4a6ef12a845","src/core/de/value.rs":"fb6fef6d23d95d516c6e1d6b5cefd8b98ba3881214a82a8a7e0a8ffbb0a12083","src/core/format.rs":"c85071b016df643b161859682d21ce34fa0ebf2a3bdbeeea69859da48f5d934f","src/core/lib.rs":"5789fbaa20497111e3efa2af8a3c1d18bb41c0c0480b542d26a2573e8ff5cf5c","src/core/macros.rs":"a61c9d19b210697304328e6bb9380a1de713e21042256df90a2b4553f178b0be","src/core/private/content.rs":"5fdfb2bb95ecc80375507acb813a4c640496385e56fc99ab448f6b19e01fcc01","src/core/private/doc.rs":"abe656c015267555ca26ebbcf2f4dcc52c719a0b9ade3a5ed4635b2784699b8c","src/core/private/mod.rs":"3bb3427ec80077b9df1853aa17681de796de0179d74871a96b88b72469de6cfc","src/core/private/seed.rs":"3f6e098c5bd314788370dcaf3ab0152fcd7feb6bcf36a9c51808938cd58071eb","src/core/private/size_hint.rs":"350694a2abaad94ca5d33958710a5bb8973a2ea1a3dcc50a41405c943761b81f","src/core/private/string.rs":"c1500fd4b64c24a5e45fa5f48c85c802816d6954a2999a72fc5a8861687212d4","src/core/ser/fmt.rs":"bd129d9f085933b76dafef6eb43ffac893c1f6484a3064dcd82faeeebc3b203c","src/core/ser/impls.rs":"5ee7efc439345e8665da0bd79bc06c02a0506e5fd0f3a4cf11af0c7197eaa643","src/core/ser/impossible.rs":"283f628d5107aa030d2e96eeb1dee187f0ac18c24d517edeb51738ab15dfb871","src/core/ser/mod.rs":"ec097d92c8545356961e977a4c9650361cadd1d3a243d805ae7b0e0e589ae803","src/core/std_error.rs":"b36fd6a2b6898770b9f1c51517eb362af115767d0f7cb4a713e1b949530ffa8a","src/integer128.rs":"a5ca321ace6b11b71f637397cf4ea41992545a9c297a23230c8a9e8b92db71fa","src/lib.rs":"2e01b1191da5bc6be5ca1f208c362bc5b4e5f9fefc0b097433b9aef19a0af926","src/private/de.rs":"68ee17774d3bbc693d9f19803747fa2c3afdb7046482e6d94ac6cf7db5a4fe20","src/private/mod.rs":"52cc5b33364b13724ea4c2989f3ccd8ba02a2ef903761499e15264835ff76388","src/private/ser.rs":"bea364a6199b57c2aa5a96a6bb0530176850dbeaaee908a6307fe610c873c8e3"},"package":"9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"}
1
+ {"$comment":"This file only protects against accidental modifications. It is not a security mechanism and does not protect against malicious changes.","files":{".cargo_vcs_info.json":"a5356e10a935346365e8744c75a7a6eb0ee0edbfb8074b712b19953c6e02e57e","Cargo.lock":"27e973a8db87258e9d422ae4b72bfccbb55f2e91393f447b5943a45b90b3f9f2","Cargo.toml":"6883caefd46e86eb15d22d3a6d274ad304c5e7934ab70eb58d81b7c4a29ef9db","Cargo.toml.orig":"137d4b56580e6b18d0cad4a86aea12a8b83b8f985a931b089de553161c35af56","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"0a33359b87747c0ae2437374c1dd4fc4d151ae3122b3931e2757b45d0ed519b8","build.rs":"e2ea6a7a82f5404c3e28cb055883c737ee7903367a10206fbb47b75c009f0eb3","crates-io.md":"00b72e63d4f3393e28f9a219c8cb8c122013d82f0d10d6d551e239b13c5ba9e4","src/core/crate_root.rs":"157ca402e23c32f11a4f1797c81afb5e9f08df96768012cf3e3199153aafb2dd","src/core/de/ignored_any.rs":"6480f2b2a83dc4764d01b2eec7309729eef2492eede2e5ee98d23a60b05198eb","src/core/de/impls.rs":"2f8e2ef9d343875bb996319e69feae0dee2287e2548cedd8d3c752b64812331c","src/core/de/mod.rs":"5ec8602d593915e0cf480b0ce67b02f6ab066dac34725237d2c7b4a6ef12a845","src/core/de/value.rs":"fb6fef6d23d95d516c6e1d6b5cefd8b98ba3881214a82a8a7e0a8ffbb0a12083","src/core/format.rs":"c85071b016df643b161859682d21ce34fa0ebf2a3bdbeeea69859da48f5d934f","src/core/lib.rs":"4e5c396d38ff5d9abf45b826a67ec3444654ed0802d057f46400ebe26f5879f8","src/core/macros.rs":"a61c9d19b210697304328e6bb9380a1de713e21042256df90a2b4553f178b0be","src/core/private/content.rs":"5fdfb2bb95ecc80375507acb813a4c640496385e56fc99ab448f6b19e01fcc01","src/core/private/doc.rs":"abe656c015267555ca26ebbcf2f4dcc52c719a0b9ade3a5ed4635b2784699b8c","src/core/private/mod.rs":"3bb3427ec80077b9df1853aa17681de796de0179d74871a96b88b72469de6cfc","src/core/private/seed.rs":"3f6e098c5bd314788370dcaf3ab0152fcd7feb6bcf36a9c51808938cd58071eb","src/core/private/size_hint.rs":"350694a2abaad94ca5d33958710a5bb8973a2ea1a3dcc50a41405c943761b81f","src/core/private/string.rs":"c1500fd4b64c24a5e45fa5f48c85c802816d6954a2999a72fc5a8861687212d4","src/core/ser/fmt.rs":"bd129d9f085933b76dafef6eb43ffac893c1f6484a3064dcd82faeeebc3b203c","src/core/ser/impls.rs":"5ee7efc439345e8665da0bd79bc06c02a0506e5fd0f3a4cf11af0c7197eaa643","src/core/ser/impossible.rs":"283f628d5107aa030d2e96eeb1dee187f0ac18c24d517edeb51738ab15dfb871","src/core/ser/mod.rs":"ec097d92c8545356961e977a4c9650361cadd1d3a243d805ae7b0e0e589ae803","src/core/std_error.rs":"b36fd6a2b6898770b9f1c51517eb362af115767d0f7cb4a713e1b949530ffa8a","src/integer128.rs":"a5ca321ace6b11b71f637397cf4ea41992545a9c297a23230c8a9e8b92db71fa","src/lib.rs":"9fcd921cee5dc64077f4027a3b42347253fdc3f3d9b88660e8c872c316db3620","src/private/de.rs":"68ee17774d3bbc693d9f19803747fa2c3afdb7046482e6d94ac6cf7db5a4fe20","src/private/mod.rs":"52cc5b33364b13724ea4c2989f3ccd8ba02a2ef903761499e15264835ff76388","src/private/ser.rs":"bea364a6199b57c2aa5a96a6bb0530176850dbeaaee908a6307fe610c873c8e3"},"package":"4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "git": {
3
+ "sha1": "7fc3b4c30c94f73a96ebd1553f2b090d928fc3a8"
4
+ },
5
+ "path_in_vcs": "serde"
6
+ }