code_ownership 2.0.0.pre.1 → 2.0.0.pre.3

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 (973) hide show
  1. checksums.yaml +4 -4
  2. data/.cargo/config +2 -2
  3. data/Cargo.lock +22 -31
  4. data/ext/cargo-vendor/codeowners-0.2.17/.cargo-checksum.json +1 -0
  5. data/ext/cargo-vendor/codeowners-0.2.17/Cargo.lock +1257 -0
  6. data/ext/cargo-vendor/codeowners-0.2.17/Cargo.toml +111 -0
  7. data/ext/cargo-vendor/codeowners-0.2.17/README.md +287 -0
  8. data/ext/cargo-vendor/codeowners-0.2.17/dev/run_benchmarks_for_gv.sh +12 -0
  9. data/ext/cargo-vendor/codeowners-0.2.17/rust-toolchain.toml +4 -0
  10. data/ext/cargo-vendor/codeowners-0.2.17/src/cache/file.rs +179 -0
  11. data/ext/cargo-vendor/codeowners-0.2.17/src/cli.rs +129 -0
  12. data/ext/cargo-vendor/codeowners-0.2.17/src/common_test.rs +358 -0
  13. data/ext/cargo-vendor/codeowners-0.2.17/src/config.rs +126 -0
  14. data/ext/cargo-vendor/codeowners-0.2.17/src/crosscheck.rs +90 -0
  15. data/ext/cargo-vendor/codeowners-0.2.17/src/lib.rs +11 -0
  16. data/ext/cargo-vendor/codeowners-0.2.17/src/main.rs +43 -0
  17. data/ext/cargo-vendor/codeowners-0.2.17/src/ownership/codeowners_file_parser.rs +504 -0
  18. data/ext/cargo-vendor/codeowners-0.2.17/src/ownership/codeowners_query.rs +32 -0
  19. data/ext/cargo-vendor/codeowners-0.2.17/src/ownership/file_generator.rs +203 -0
  20. data/ext/cargo-vendor/codeowners-0.2.17/src/ownership/file_owner_resolver.rs +414 -0
  21. data/ext/cargo-vendor/codeowners-0.2.17/src/ownership/mapper/annotated_file_mapper.rs +158 -0
  22. data/ext/cargo-vendor/codeowners-0.2.17/src/ownership/mapper/package_mapper.rs +220 -0
  23. data/ext/cargo-vendor/codeowners-0.2.17/src/ownership/mapper.rs +249 -0
  24. data/ext/cargo-vendor/codeowners-0.2.17/src/ownership/validator.rs +218 -0
  25. data/ext/cargo-vendor/codeowners-0.2.17/src/ownership.rs +223 -0
  26. data/ext/cargo-vendor/codeowners-0.2.17/src/path_utils.rs +49 -0
  27. data/ext/cargo-vendor/codeowners-0.2.17/src/project.rs +229 -0
  28. data/ext/cargo-vendor/codeowners-0.2.17/src/project_builder.rs +337 -0
  29. data/ext/cargo-vendor/codeowners-0.2.17/src/project_file_builder.rs +107 -0
  30. data/ext/cargo-vendor/codeowners-0.2.17/src/runner/api.rs +141 -0
  31. data/ext/cargo-vendor/codeowners-0.2.17/src/runner/types.rs +37 -0
  32. data/ext/cargo-vendor/codeowners-0.2.17/src/runner.rs +390 -0
  33. data/ext/cargo-vendor/codeowners-0.2.17/src/tracked_files.rs +58 -0
  34. data/ext/cargo-vendor/codeowners-0.2.17/tests/common/mod.rs +179 -0
  35. data/ext/cargo-vendor/codeowners-0.2.17/tests/crosscheck_owners_test.rs +74 -0
  36. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/javascript_only_project/.github/CODEOWNERS +9 -0
  37. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/javascript_only_project/.keep +3 -0
  38. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/javascript_only_project/config/code_ownership.yml +12 -0
  39. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/javascript_only_project/config/teams/design.yml +7 -0
  40. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/javascript_only_project/config/teams/frontend.yml +6 -0
  41. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/javascript_only_project/frontend/apps/public/index.tsx +6 -0
  42. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/javascript_only_project/frontend/packages/dashboard/package.json +9 -0
  43. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/javascript_only_project/frontend/packages/dashboard/src/index.tsx +6 -0
  44. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/javascript_only_project/frontend/packages/ui-kit/.codeowner +3 -0
  45. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/javascript_only_project/frontend/packages/ui-kit/src/button.tsx +5 -0
  46. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/multiple-directory-owners/config/code_ownership.yml +10 -0
  47. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project/.github/CODEOWNERS +41 -0
  48. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project/config/code_ownership.yml +10 -0
  49. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project/javascript/packages/list/page-admin.tsx +1 -0
  50. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project/ruby/app/models/payroll.rb +3 -0
  51. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project/ruby/app/views/foos/edit.erb +1 -0
  52. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project/ruby/app/views/foos/index.html.erb +1 -0
  53. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project/ruby/app/views/foos/new.html.erb +1 -0
  54. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/.github/CODEOWNERS +53 -0
  55. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/config/code_ownership.yml +10 -0
  56. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/config/teams/brewers.yml +11 -0
  57. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/config/teams/cubs.yml +9 -0
  58. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/config/teams/giants.yml +8 -0
  59. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/config/teams/rockies.yml +8 -0
  60. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/frontend/packages/components/datepicker/package.json +5 -0
  61. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/frontend/packages/components/datepicker/src/picks/dp.tsx +3 -0
  62. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/frontend/packages/components/list/package.json +5 -0
  63. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/frontend/packages/components/list/src/item.tsx +3 -0
  64. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/package.json +5 -0
  65. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/src/field.tsx +3 -0
  66. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/src/fields/small.tsx +3 -0
  67. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/gems/apollo/lib/apollo.rb +6 -0
  68. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/gems/ivy/lib/ivy.rb +6 -0
  69. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/gems/lager/lib/lager.rb +6 -0
  70. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/gems/summit/lib/summit.rb +6 -0
  71. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/packs/games/package.yml +1 -0
  72. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/packs/locations/app/services/capacity.rb +0 -0
  73. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/packs/locations/package.yml +1 -0
  74. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/packs/schedule/app/services/date.rb +0 -0
  75. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/packs/schedule/package.yml +1 -0
  76. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/ruby/app/brewers/lib/util.rb +3 -0
  77. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/ruby/app/brewers/services/play.rb +9 -0
  78. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/.codeowner +3 -0
  79. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/.codeowner +1 -0
  80. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/db/price.rb +5 -0
  81. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/entertainment.rb +0 -0
  82. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/play.rb +5 -0
  83. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/ruby/app/giants/services/play.rb +0 -0
  84. data/ext/cargo-vendor/codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/ruby/app/rockies/services/play.rb +0 -0
  85. data/ext/cargo-vendor/codeowners-0.2.17/tests/invalid_project_test.rs +144 -0
  86. data/ext/cargo-vendor/codeowners-0.2.17/tests/multiple_directory_owners_test.rs +41 -0
  87. data/ext/cargo-vendor/codeowners-0.2.17/tests/runner_api.rs +181 -0
  88. data/ext/cargo-vendor/codeowners-0.2.17/tests/untracked_files_test.rs +38 -0
  89. data/ext/cargo-vendor/codeowners-0.2.17/tests/valid_project_test.rs +348 -0
  90. data/ext/cargo-vendor/codeowners-0.2.17/tests/valid_project_with_overrides_test.rs +38 -0
  91. data/ext/cargo-vendor/codeowners-0.2.17/tmp/.gitkeep +0 -0
  92. data/ext/cargo-vendor/glob-0.3.3/.cargo-checksum.json +1 -0
  93. data/ext/cargo-vendor/glob-0.3.3/.cargo_vcs_info.json +6 -0
  94. data/ext/cargo-vendor/glob-0.3.3/.github/workflows/rust.yml +99 -0
  95. data/ext/cargo-vendor/glob-0.3.3/CHANGELOG.md +44 -0
  96. data/ext/cargo-vendor/glob-0.3.3/Cargo.lock +107 -0
  97. data/ext/cargo-vendor/glob-0.3.3/Cargo.toml +45 -0
  98. data/ext/cargo-vendor/glob-0.3.3/Cargo.toml.orig +18 -0
  99. data/ext/cargo-vendor/glob-0.3.3/README.md +38 -0
  100. data/ext/cargo-vendor/glob-0.3.3/src/lib.rs +1511 -0
  101. data/ext/cargo-vendor/glob-0.3.3/tests/glob-std.rs +477 -0
  102. data/ext/cargo-vendor/indexmap-2.11.0/.cargo-checksum.json +1 -0
  103. data/ext/cargo-vendor/indexmap-2.11.0/.cargo_vcs_info.json +6 -0
  104. data/ext/cargo-vendor/indexmap-2.11.0/.github/workflows/ci.yml +165 -0
  105. data/ext/cargo-vendor/indexmap-2.11.0/Cargo.lock +243 -0
  106. data/ext/cargo-vendor/indexmap-2.11.0/Cargo.toml +148 -0
  107. data/ext/cargo-vendor/indexmap-2.11.0/Cargo.toml.orig +62 -0
  108. data/ext/cargo-vendor/indexmap-2.11.0/RELEASES.md +575 -0
  109. data/ext/cargo-vendor/indexmap-2.11.0/src/lib.rs +290 -0
  110. data/ext/cargo-vendor/indexmap-2.11.0/src/map/core/entry.rs +625 -0
  111. data/ext/cargo-vendor/indexmap-2.11.0/src/map/core.rs +764 -0
  112. data/ext/cargo-vendor/indexmap-2.11.0/src/map/mutable.rs +165 -0
  113. data/ext/cargo-vendor/indexmap-2.11.0/src/map/slice.rs +800 -0
  114. data/ext/cargo-vendor/indexmap-2.11.0/src/map/tests.rs +1312 -0
  115. data/ext/cargo-vendor/indexmap-2.11.0/src/map.rs +1832 -0
  116. data/ext/cargo-vendor/indexmap-2.11.0/src/rayon/map.rs +686 -0
  117. data/ext/cargo-vendor/indexmap-2.11.0/src/rayon/set.rs +777 -0
  118. data/ext/cargo-vendor/indexmap-2.11.0/src/set/mutable.rs +86 -0
  119. data/ext/cargo-vendor/indexmap-2.11.0/src/set/slice.rs +427 -0
  120. data/ext/cargo-vendor/indexmap-2.11.0/src/set/tests.rs +1060 -0
  121. data/ext/cargo-vendor/indexmap-2.11.0/src/set.rs +1454 -0
  122. data/ext/cargo-vendor/indexmap-2.11.0/src/sval.rs +36 -0
  123. data/ext/cargo-vendor/indexmap-2.11.0/tests/quick.rs +894 -0
  124. data/ext/cargo-vendor/rayon-1.11.0/.cargo-checksum.json +1 -0
  125. data/ext/cargo-vendor/rayon-1.11.0/.cargo_vcs_info.json +6 -0
  126. data/ext/cargo-vendor/rayon-1.11.0/Cargo.lock +318 -0
  127. data/ext/cargo-vendor/rayon-1.11.0/Cargo.toml +130 -0
  128. data/ext/cargo-vendor/rayon-1.11.0/Cargo.toml.orig +57 -0
  129. data/ext/cargo-vendor/rayon-1.11.0/FAQ.md +213 -0
  130. data/ext/cargo-vendor/rayon-1.11.0/README.md +150 -0
  131. data/ext/cargo-vendor/rayon-1.11.0/RELEASES.md +922 -0
  132. data/ext/cargo-vendor/rayon-1.11.0/src/array.rs +85 -0
  133. data/ext/cargo-vendor/rayon-1.11.0/src/collections/binary_heap.rs +129 -0
  134. data/ext/cargo-vendor/rayon-1.11.0/src/collections/btree_map.rs +66 -0
  135. data/ext/cargo-vendor/rayon-1.11.0/src/collections/btree_set.rs +52 -0
  136. data/ext/cargo-vendor/rayon-1.11.0/src/collections/hash_map.rs +93 -0
  137. data/ext/cargo-vendor/rayon-1.11.0/src/collections/hash_set.rs +79 -0
  138. data/ext/cargo-vendor/rayon-1.11.0/src/collections/linked_list.rs +66 -0
  139. data/ext/cargo-vendor/rayon-1.11.0/src/collections/mod.rs +84 -0
  140. data/ext/cargo-vendor/rayon-1.11.0/src/collections/vec_deque.rs +159 -0
  141. data/ext/cargo-vendor/rayon-1.11.0/src/iter/blocks.rs +129 -0
  142. data/ext/cargo-vendor/rayon-1.11.0/src/iter/chain.rs +258 -0
  143. data/ext/cargo-vendor/rayon-1.11.0/src/iter/chunks.rs +216 -0
  144. data/ext/cargo-vendor/rayon-1.11.0/src/iter/cloned.rs +219 -0
  145. data/ext/cargo-vendor/rayon-1.11.0/src/iter/collect/mod.rs +114 -0
  146. data/ext/cargo-vendor/rayon-1.11.0/src/iter/collect/test.rs +368 -0
  147. data/ext/cargo-vendor/rayon-1.11.0/src/iter/copied.rs +219 -0
  148. data/ext/cargo-vendor/rayon-1.11.0/src/iter/empty.rs +108 -0
  149. data/ext/cargo-vendor/rayon-1.11.0/src/iter/enumerate.rs +128 -0
  150. data/ext/cargo-vendor/rayon-1.11.0/src/iter/filter.rs +137 -0
  151. data/ext/cargo-vendor/rayon-1.11.0/src/iter/filter_map.rs +141 -0
  152. data/ext/cargo-vendor/rayon-1.11.0/src/iter/find_first_last/mod.rs +230 -0
  153. data/ext/cargo-vendor/rayon-1.11.0/src/iter/find_first_last/test.rs +102 -0
  154. data/ext/cargo-vendor/rayon-1.11.0/src/iter/flat_map.rs +153 -0
  155. data/ext/cargo-vendor/rayon-1.11.0/src/iter/flat_map_iter.rs +145 -0
  156. data/ext/cargo-vendor/rayon-1.11.0/src/iter/flatten.rs +134 -0
  157. data/ext/cargo-vendor/rayon-1.11.0/src/iter/flatten_iter.rs +124 -0
  158. data/ext/cargo-vendor/rayon-1.11.0/src/iter/fold.rs +289 -0
  159. data/ext/cargo-vendor/rayon-1.11.0/src/iter/fold_chunks.rs +224 -0
  160. data/ext/cargo-vendor/rayon-1.11.0/src/iter/fold_chunks_with.rs +220 -0
  161. data/ext/cargo-vendor/rayon-1.11.0/src/iter/from_par_iter.rs +280 -0
  162. data/ext/cargo-vendor/rayon-1.11.0/src/iter/inspect.rs +253 -0
  163. data/ext/cargo-vendor/rayon-1.11.0/src/iter/interleave.rs +326 -0
  164. data/ext/cargo-vendor/rayon-1.11.0/src/iter/interleave_shortest.rs +80 -0
  165. data/ext/cargo-vendor/rayon-1.11.0/src/iter/intersperse.rs +401 -0
  166. data/ext/cargo-vendor/rayon-1.11.0/src/iter/len.rs +262 -0
  167. data/ext/cargo-vendor/rayon-1.11.0/src/iter/map.rs +255 -0
  168. data/ext/cargo-vendor/rayon-1.11.0/src/iter/map_with.rs +565 -0
  169. data/ext/cargo-vendor/rayon-1.11.0/src/iter/mod.rs +3627 -0
  170. data/ext/cargo-vendor/rayon-1.11.0/src/iter/multizip.rs +335 -0
  171. data/ext/cargo-vendor/rayon-1.11.0/src/iter/once.rs +70 -0
  172. data/ext/cargo-vendor/rayon-1.11.0/src/iter/panic_fuse.rs +338 -0
  173. data/ext/cargo-vendor/rayon-1.11.0/src/iter/par_bridge.rs +157 -0
  174. data/ext/cargo-vendor/rayon-1.11.0/src/iter/plumbing/mod.rs +476 -0
  175. data/ext/cargo-vendor/rayon-1.11.0/src/iter/positions.rs +133 -0
  176. data/ext/cargo-vendor/rayon-1.11.0/src/iter/repeat.rs +295 -0
  177. data/ext/cargo-vendor/rayon-1.11.0/src/iter/rev.rs +119 -0
  178. data/ext/cargo-vendor/rayon-1.11.0/src/iter/skip.rs +93 -0
  179. data/ext/cargo-vendor/rayon-1.11.0/src/iter/skip_any.rs +140 -0
  180. data/ext/cargo-vendor/rayon-1.11.0/src/iter/skip_any_while.rs +162 -0
  181. data/ext/cargo-vendor/rayon-1.11.0/src/iter/splitter.rs +172 -0
  182. data/ext/cargo-vendor/rayon-1.11.0/src/iter/step_by.rs +135 -0
  183. data/ext/cargo-vendor/rayon-1.11.0/src/iter/take.rs +84 -0
  184. data/ext/cargo-vendor/rayon-1.11.0/src/iter/take_any.rs +140 -0
  185. data/ext/cargo-vendor/rayon-1.11.0/src/iter/take_any_while.rs +162 -0
  186. data/ext/cargo-vendor/rayon-1.11.0/src/iter/test.rs +2392 -0
  187. data/ext/cargo-vendor/rayon-1.11.0/src/iter/try_fold.rs +282 -0
  188. data/ext/cargo-vendor/rayon-1.11.0/src/iter/unzip.rs +524 -0
  189. data/ext/cargo-vendor/rayon-1.11.0/src/iter/update.rs +323 -0
  190. data/ext/cargo-vendor/rayon-1.11.0/src/iter/walk_tree.rs +524 -0
  191. data/ext/cargo-vendor/rayon-1.11.0/src/iter/while_some.rs +150 -0
  192. data/ext/cargo-vendor/rayon-1.11.0/src/iter/zip.rs +153 -0
  193. data/ext/cargo-vendor/rayon-1.11.0/src/iter/zip_eq.rs +67 -0
  194. data/ext/cargo-vendor/rayon-1.11.0/src/lib.rs +156 -0
  195. data/ext/cargo-vendor/rayon-1.11.0/src/math.rs +25 -0
  196. data/ext/cargo-vendor/rayon-1.11.0/src/option.rs +197 -0
  197. data/ext/cargo-vendor/rayon-1.11.0/src/range.rs +457 -0
  198. data/ext/cargo-vendor/rayon-1.11.0/src/range_inclusive.rs +381 -0
  199. data/ext/cargo-vendor/rayon-1.11.0/src/result.rs +132 -0
  200. data/ext/cargo-vendor/rayon-1.11.0/src/slice/chunk_by.rs +239 -0
  201. data/ext/cargo-vendor/rayon-1.11.0/src/slice/chunks.rs +387 -0
  202. data/ext/cargo-vendor/rayon-1.11.0/src/slice/mod.rs +1242 -0
  203. data/ext/cargo-vendor/rayon-1.11.0/src/slice/rchunks.rs +385 -0
  204. data/ext/cargo-vendor/rayon-1.11.0/src/slice/sort.rs +1686 -0
  205. data/ext/cargo-vendor/rayon-1.11.0/src/slice/test.rs +216 -0
  206. data/ext/cargo-vendor/rayon-1.11.0/src/str.rs +1005 -0
  207. data/ext/cargo-vendor/rayon-1.11.0/src/vec.rs +292 -0
  208. data/ext/cargo-vendor/rayon-1.11.0/tests/clones.rs +222 -0
  209. data/ext/cargo-vendor/rayon-1.11.0/tests/collect.rs +113 -0
  210. data/ext/cargo-vendor/rayon-1.11.0/tests/debug.rs +233 -0
  211. data/ext/cargo-vendor/rayon-1.11.0/tests/named-threads.rs +25 -0
  212. data/ext/cargo-vendor/rayon-1.11.0/tests/producer_split_at.rs +386 -0
  213. data/ext/cargo-vendor/rayon-1.11.0/tests/sort-panic-safe.rs +164 -0
  214. data/ext/cargo-vendor/rayon-1.11.0/tests/str.rs +122 -0
  215. data/ext/cargo-vendor/rayon-core-1.13.0/.cargo-checksum.json +1 -0
  216. data/ext/cargo-vendor/rayon-core-1.13.0/.cargo_vcs_info.json +6 -0
  217. data/ext/cargo-vendor/rayon-core-1.13.0/Cargo.lock +309 -0
  218. data/ext/cargo-vendor/rayon-core-1.13.0/Cargo.toml +93 -0
  219. data/ext/cargo-vendor/rayon-core-1.13.0/Cargo.toml.orig +35 -0
  220. data/ext/cargo-vendor/rayon-core-1.13.0/README.md +11 -0
  221. data/ext/cargo-vendor/rayon-core-1.13.0/src/broadcast/mod.rs +150 -0
  222. data/ext/cargo-vendor/rayon-core-1.13.0/src/join/mod.rs +186 -0
  223. data/ext/cargo-vendor/rayon-core-1.13.0/src/join/test.rs +150 -0
  224. data/ext/cargo-vendor/rayon-core-1.13.0/src/latch.rs +457 -0
  225. data/ext/cargo-vendor/rayon-core-1.13.0/src/lib.rs +864 -0
  226. data/ext/cargo-vendor/rayon-core-1.13.0/src/registry.rs +1002 -0
  227. data/ext/cargo-vendor/rayon-core-1.13.0/src/scope/mod.rs +773 -0
  228. data/ext/cargo-vendor/rayon-core-1.13.0/src/scope/test.rs +621 -0
  229. data/ext/cargo-vendor/rayon-core-1.13.0/src/sleep/README.md +219 -0
  230. data/ext/cargo-vendor/rayon-core-1.13.0/src/sleep/counters.rs +273 -0
  231. data/ext/cargo-vendor/rayon-core-1.13.0/src/sleep/mod.rs +324 -0
  232. data/ext/cargo-vendor/rayon-core-1.13.0/src/spawn/mod.rs +163 -0
  233. data/ext/cargo-vendor/rayon-core-1.13.0/src/spawn/test.rs +255 -0
  234. data/ext/cargo-vendor/rayon-core-1.13.0/src/test.rs +200 -0
  235. data/ext/cargo-vendor/rayon-core-1.13.0/src/thread_pool/mod.rs +502 -0
  236. data/ext/cargo-vendor/rayon-core-1.13.0/src/thread_pool/test.rs +418 -0
  237. data/ext/cargo-vendor/rayon-core-1.13.0/tests/use_current_thread.rs +57 -0
  238. data/ext/cargo-vendor/serde_json-1.0.143/.cargo-checksum.json +1 -0
  239. data/ext/cargo-vendor/serde_json-1.0.143/.cargo_vcs_info.json +6 -0
  240. data/ext/cargo-vendor/serde_json-1.0.143/.github/workflows/ci.yml +156 -0
  241. data/ext/cargo-vendor/serde_json-1.0.143/Cargo.lock +419 -0
  242. data/ext/cargo-vendor/serde_json-1.0.143/Cargo.toml +157 -0
  243. data/ext/cargo-vendor/serde_json-1.0.143/Cargo.toml.orig +91 -0
  244. data/ext/cargo-vendor/serde_json-1.0.143/src/lib.rs +438 -0
  245. data/ext/cargo-vendor/serde_json-1.0.143/src/map.rs +1181 -0
  246. data/ext/cargo-vendor/serde_json-1.0.143/src/ser.rs +2285 -0
  247. data/ext/cargo-vendor/serde_json-1.0.143/src/value/de.rs +1507 -0
  248. data/ext/cargo-vendor/tempfile-3.21.0/.cargo-checksum.json +1 -0
  249. data/ext/cargo-vendor/tempfile-3.21.0/.cargo_vcs_info.json +6 -0
  250. data/ext/cargo-vendor/tempfile-3.21.0/.github/workflows/ci.yml +109 -0
  251. data/ext/cargo-vendor/tempfile-3.21.0/CHANGELOG.md +364 -0
  252. data/ext/cargo-vendor/tempfile-3.21.0/Cargo.lock +196 -0
  253. data/ext/cargo-vendor/tempfile-3.21.0/Cargo.toml +98 -0
  254. data/ext/cargo-vendor/tempfile-3.21.0/Cargo.toml.orig +47 -0
  255. data/ext/cargo-vendor/winapi-util-0.1.10/.cargo-checksum.json +1 -0
  256. data/ext/cargo-vendor/winapi-util-0.1.10/.cargo_vcs_info.json +6 -0
  257. data/ext/cargo-vendor/winapi-util-0.1.10/.github/FUNDING.yml +1 -0
  258. data/ext/cargo-vendor/winapi-util-0.1.10/Cargo.lock +83 -0
  259. data/ext/cargo-vendor/winapi-util-0.1.10/Cargo.toml +54 -0
  260. data/ext/cargo-vendor/winapi-util-0.1.10/Cargo.toml.orig +25 -0
  261. data/ext/code_ownership/Cargo.toml +9 -9
  262. data/ext/code_ownership/src/lib.rs +40 -6
  263. data/lib/code_ownership/cli.rb +5 -18
  264. data/lib/code_ownership/private/for_file_output_builder.rb +83 -0
  265. data/lib/code_ownership/private/team_finder.rb +21 -7
  266. data/lib/code_ownership/version.rb +1 -1
  267. data/lib/code_ownership.rb +173 -6
  268. metadata +513 -706
  269. data/ext/cargo-vendor/codeowners-0.2.7/.cargo-checksum.json +0 -1
  270. data/ext/cargo-vendor/codeowners-0.2.7/Cargo.lock +0 -1230
  271. data/ext/cargo-vendor/codeowners-0.2.7/Cargo.toml +0 -95
  272. data/ext/cargo-vendor/codeowners-0.2.7/README.md +0 -204
  273. data/ext/cargo-vendor/codeowners-0.2.7/dev/run_benchmarks_for_gv.sh +0 -13
  274. data/ext/cargo-vendor/codeowners-0.2.7/rust-toolchain.toml +0 -4
  275. data/ext/cargo-vendor/codeowners-0.2.7/src/cache/file.rs +0 -181
  276. data/ext/cargo-vendor/codeowners-0.2.7/src/cli.rs +0 -119
  277. data/ext/cargo-vendor/codeowners-0.2.7/src/common_test.rs +0 -338
  278. data/ext/cargo-vendor/codeowners-0.2.7/src/config.rs +0 -118
  279. data/ext/cargo-vendor/codeowners-0.2.7/src/lib.rs +0 -8
  280. data/ext/cargo-vendor/codeowners-0.2.7/src/main.rs +0 -43
  281. data/ext/cargo-vendor/codeowners-0.2.7/src/ownership/file_generator.rs +0 -203
  282. data/ext/cargo-vendor/codeowners-0.2.7/src/ownership/for_file_fast.rs +0 -425
  283. data/ext/cargo-vendor/codeowners-0.2.7/src/ownership/mapper/package_mapper.rs +0 -220
  284. data/ext/cargo-vendor/codeowners-0.2.7/src/ownership/mapper/team_file_mapper.rs +0 -123
  285. data/ext/cargo-vendor/codeowners-0.2.7/src/ownership/mapper.rs +0 -249
  286. data/ext/cargo-vendor/codeowners-0.2.7/src/ownership/parser.rs +0 -486
  287. data/ext/cargo-vendor/codeowners-0.2.7/src/ownership/tests.rs +0 -219
  288. data/ext/cargo-vendor/codeowners-0.2.7/src/ownership/validator.rs +0 -218
  289. data/ext/cargo-vendor/codeowners-0.2.7/src/ownership.rs +0 -220
  290. data/ext/cargo-vendor/codeowners-0.2.7/src/project.rs +0 -229
  291. data/ext/cargo-vendor/codeowners-0.2.7/src/project_builder.rs +0 -319
  292. data/ext/cargo-vendor/codeowners-0.2.7/src/project_file_builder.rs +0 -75
  293. data/ext/cargo-vendor/codeowners-0.2.7/src/runner.rs +0 -312
  294. data/ext/cargo-vendor/codeowners-0.2.7/tests/common/mod.rs +0 -113
  295. data/ext/cargo-vendor/codeowners-0.2.7/tests/fixtures/multiple-directory-owners/config/code_ownership.yml +0 -10
  296. data/ext/cargo-vendor/codeowners-0.2.7/tests/fixtures/valid_project/.github/CODEOWNERS +0 -37
  297. data/ext/cargo-vendor/codeowners-0.2.7/tests/fixtures/valid_project/config/code_ownership.yml +0 -10
  298. data/ext/cargo-vendor/codeowners-0.2.7/tests/fixtures/valid_project/ruby/app/models/payroll.rb +0 -3
  299. data/ext/cargo-vendor/codeowners-0.2.7/tests/invalid_project_test.rs +0 -90
  300. data/ext/cargo-vendor/codeowners-0.2.7/tests/multiple_directory_owners_test.rs +0 -35
  301. data/ext/cargo-vendor/codeowners-0.2.7/tests/valid_project_test.rs +0 -284
  302. data/ext/cargo-vendor/glob-0.3.2/.cargo-checksum.json +0 -1
  303. data/ext/cargo-vendor/glob-0.3.2/.cargo_vcs_info.json +0 -6
  304. data/ext/cargo-vendor/glob-0.3.2/.github/workflows/rust.yml +0 -65
  305. data/ext/cargo-vendor/glob-0.3.2/CHANGELOG.md +0 -33
  306. data/ext/cargo-vendor/glob-0.3.2/Cargo.lock +0 -107
  307. data/ext/cargo-vendor/glob-0.3.2/Cargo.toml +0 -45
  308. data/ext/cargo-vendor/glob-0.3.2/Cargo.toml.orig +0 -19
  309. data/ext/cargo-vendor/glob-0.3.2/README.md +0 -37
  310. data/ext/cargo-vendor/glob-0.3.2/src/lib.rs +0 -1501
  311. data/ext/cargo-vendor/glob-0.3.2/tests/glob-std.rs +0 -474
  312. data/ext/cargo-vendor/indexmap-2.10.0/.cargo-checksum.json +0 -1
  313. data/ext/cargo-vendor/indexmap-2.10.0/.cargo_vcs_info.json +0 -6
  314. data/ext/cargo-vendor/indexmap-2.10.0/.github/workflows/ci.yml +0 -159
  315. data/ext/cargo-vendor/indexmap-2.10.0/Cargo.lock +0 -236
  316. data/ext/cargo-vendor/indexmap-2.10.0/Cargo.toml +0 -142
  317. data/ext/cargo-vendor/indexmap-2.10.0/Cargo.toml.orig +0 -61
  318. data/ext/cargo-vendor/indexmap-2.10.0/RELEASES.md +0 -563
  319. data/ext/cargo-vendor/indexmap-2.10.0/src/lib.rs +0 -288
  320. data/ext/cargo-vendor/indexmap-2.10.0/src/map/core/entry.rs +0 -574
  321. data/ext/cargo-vendor/indexmap-2.10.0/src/map/core.rs +0 -735
  322. data/ext/cargo-vendor/indexmap-2.10.0/src/map/mutable.rs +0 -165
  323. data/ext/cargo-vendor/indexmap-2.10.0/src/map/slice.rs +0 -751
  324. data/ext/cargo-vendor/indexmap-2.10.0/src/map/tests.rs +0 -1228
  325. data/ext/cargo-vendor/indexmap-2.10.0/src/map.rs +0 -1697
  326. data/ext/cargo-vendor/indexmap-2.10.0/src/rayon/map.rs +0 -662
  327. data/ext/cargo-vendor/indexmap-2.10.0/src/rayon/set.rs +0 -755
  328. data/ext/cargo-vendor/indexmap-2.10.0/src/set/mutable.rs +0 -86
  329. data/ext/cargo-vendor/indexmap-2.10.0/src/set/slice.rs +0 -380
  330. data/ext/cargo-vendor/indexmap-2.10.0/src/set/tests.rs +0 -999
  331. data/ext/cargo-vendor/indexmap-2.10.0/src/set.rs +0 -1340
  332. data/ext/cargo-vendor/indexmap-2.10.0/tests/quick.rs +0 -800
  333. data/ext/cargo-vendor/rayon-1.10.0/.cargo-checksum.json +0 -1
  334. data/ext/cargo-vendor/rayon-1.10.0/.cargo_vcs_info.json +0 -6
  335. data/ext/cargo-vendor/rayon-1.10.0/Cargo.toml +0 -61
  336. data/ext/cargo-vendor/rayon-1.10.0/Cargo.toml.orig +0 -39
  337. data/ext/cargo-vendor/rayon-1.10.0/FAQ.md +0 -227
  338. data/ext/cargo-vendor/rayon-1.10.0/README.md +0 -151
  339. data/ext/cargo-vendor/rayon-1.10.0/RELEASES.md +0 -909
  340. data/ext/cargo-vendor/rayon-1.10.0/src/array.rs +0 -85
  341. data/ext/cargo-vendor/rayon-1.10.0/src/collections/binary_heap.rs +0 -120
  342. data/ext/cargo-vendor/rayon-1.10.0/src/collections/btree_map.rs +0 -66
  343. data/ext/cargo-vendor/rayon-1.10.0/src/collections/btree_set.rs +0 -52
  344. data/ext/cargo-vendor/rayon-1.10.0/src/collections/hash_map.rs +0 -96
  345. data/ext/cargo-vendor/rayon-1.10.0/src/collections/hash_set.rs +0 -80
  346. data/ext/cargo-vendor/rayon-1.10.0/src/collections/linked_list.rs +0 -66
  347. data/ext/cargo-vendor/rayon-1.10.0/src/collections/mod.rs +0 -84
  348. data/ext/cargo-vendor/rayon-1.10.0/src/collections/vec_deque.rs +0 -159
  349. data/ext/cargo-vendor/rayon-1.10.0/src/iter/blocks.rs +0 -131
  350. data/ext/cargo-vendor/rayon-1.10.0/src/iter/chain.rs +0 -267
  351. data/ext/cargo-vendor/rayon-1.10.0/src/iter/chunks.rs +0 -224
  352. data/ext/cargo-vendor/rayon-1.10.0/src/iter/cloned.rs +0 -223
  353. data/ext/cargo-vendor/rayon-1.10.0/src/iter/collect/mod.rs +0 -116
  354. data/ext/cargo-vendor/rayon-1.10.0/src/iter/collect/test.rs +0 -373
  355. data/ext/cargo-vendor/rayon-1.10.0/src/iter/copied.rs +0 -223
  356. data/ext/cargo-vendor/rayon-1.10.0/src/iter/empty.rs +0 -104
  357. data/ext/cargo-vendor/rayon-1.10.0/src/iter/enumerate.rs +0 -133
  358. data/ext/cargo-vendor/rayon-1.10.0/src/iter/filter.rs +0 -141
  359. data/ext/cargo-vendor/rayon-1.10.0/src/iter/filter_map.rs +0 -142
  360. data/ext/cargo-vendor/rayon-1.10.0/src/iter/find_first_last/mod.rs +0 -230
  361. data/ext/cargo-vendor/rayon-1.10.0/src/iter/find_first_last/test.rs +0 -105
  362. data/ext/cargo-vendor/rayon-1.10.0/src/iter/flat_map.rs +0 -154
  363. data/ext/cargo-vendor/rayon-1.10.0/src/iter/flat_map_iter.rs +0 -147
  364. data/ext/cargo-vendor/rayon-1.10.0/src/iter/flatten.rs +0 -140
  365. data/ext/cargo-vendor/rayon-1.10.0/src/iter/flatten_iter.rs +0 -132
  366. data/ext/cargo-vendor/rayon-1.10.0/src/iter/fold.rs +0 -302
  367. data/ext/cargo-vendor/rayon-1.10.0/src/iter/fold_chunks.rs +0 -236
  368. data/ext/cargo-vendor/rayon-1.10.0/src/iter/fold_chunks_with.rs +0 -231
  369. data/ext/cargo-vendor/rayon-1.10.0/src/iter/from_par_iter.rs +0 -310
  370. data/ext/cargo-vendor/rayon-1.10.0/src/iter/inspect.rs +0 -257
  371. data/ext/cargo-vendor/rayon-1.10.0/src/iter/interleave.rs +0 -335
  372. data/ext/cargo-vendor/rayon-1.10.0/src/iter/interleave_shortest.rs +0 -85
  373. data/ext/cargo-vendor/rayon-1.10.0/src/iter/intersperse.rs +0 -410
  374. data/ext/cargo-vendor/rayon-1.10.0/src/iter/len.rs +0 -270
  375. data/ext/cargo-vendor/rayon-1.10.0/src/iter/map.rs +0 -259
  376. data/ext/cargo-vendor/rayon-1.10.0/src/iter/map_with.rs +0 -573
  377. data/ext/cargo-vendor/rayon-1.10.0/src/iter/mod.rs +0 -3656
  378. data/ext/cargo-vendor/rayon-1.10.0/src/iter/multizip.rs +0 -338
  379. data/ext/cargo-vendor/rayon-1.10.0/src/iter/once.rs +0 -68
  380. data/ext/cargo-vendor/rayon-1.10.0/src/iter/panic_fuse.rs +0 -342
  381. data/ext/cargo-vendor/rayon-1.10.0/src/iter/par_bridge.rs +0 -159
  382. data/ext/cargo-vendor/rayon-1.10.0/src/iter/plumbing/mod.rs +0 -483
  383. data/ext/cargo-vendor/rayon-1.10.0/src/iter/positions.rs +0 -137
  384. data/ext/cargo-vendor/rayon-1.10.0/src/iter/repeat.rs +0 -241
  385. data/ext/cargo-vendor/rayon-1.10.0/src/iter/rev.rs +0 -123
  386. data/ext/cargo-vendor/rayon-1.10.0/src/iter/skip.rs +0 -94
  387. data/ext/cargo-vendor/rayon-1.10.0/src/iter/skip_any.rs +0 -144
  388. data/ext/cargo-vendor/rayon-1.10.0/src/iter/skip_any_while.rs +0 -166
  389. data/ext/cargo-vendor/rayon-1.10.0/src/iter/splitter.rs +0 -174
  390. data/ext/cargo-vendor/rayon-1.10.0/src/iter/step_by.rs +0 -141
  391. data/ext/cargo-vendor/rayon-1.10.0/src/iter/take.rs +0 -85
  392. data/ext/cargo-vendor/rayon-1.10.0/src/iter/take_any.rs +0 -144
  393. data/ext/cargo-vendor/rayon-1.10.0/src/iter/take_any_while.rs +0 -166
  394. data/ext/cargo-vendor/rayon-1.10.0/src/iter/test.rs +0 -2333
  395. data/ext/cargo-vendor/rayon-1.10.0/src/iter/try_fold.rs +0 -298
  396. data/ext/cargo-vendor/rayon-1.10.0/src/iter/unzip.rs +0 -525
  397. data/ext/cargo-vendor/rayon-1.10.0/src/iter/update.rs +0 -327
  398. data/ext/cargo-vendor/rayon-1.10.0/src/iter/walk_tree.rs +0 -529
  399. data/ext/cargo-vendor/rayon-1.10.0/src/iter/while_some.rs +0 -154
  400. data/ext/cargo-vendor/rayon-1.10.0/src/iter/zip.rs +0 -158
  401. data/ext/cargo-vendor/rayon-1.10.0/src/iter/zip_eq.rs +0 -72
  402. data/ext/cargo-vendor/rayon-1.10.0/src/lib.rs +0 -160
  403. data/ext/cargo-vendor/rayon-1.10.0/src/math.rs +0 -54
  404. data/ext/cargo-vendor/rayon-1.10.0/src/option.rs +0 -203
  405. data/ext/cargo-vendor/rayon-1.10.0/src/range.rs +0 -454
  406. data/ext/cargo-vendor/rayon-1.10.0/src/range_inclusive.rs +0 -381
  407. data/ext/cargo-vendor/rayon-1.10.0/src/result.rs +0 -132
  408. data/ext/cargo-vendor/rayon-1.10.0/src/slice/chunk_by.rs +0 -244
  409. data/ext/cargo-vendor/rayon-1.10.0/src/slice/chunks.rs +0 -388
  410. data/ext/cargo-vendor/rayon-1.10.0/src/slice/mergesort.rs +0 -755
  411. data/ext/cargo-vendor/rayon-1.10.0/src/slice/mod.rs +0 -1226
  412. data/ext/cargo-vendor/rayon-1.10.0/src/slice/quicksort.rs +0 -902
  413. data/ext/cargo-vendor/rayon-1.10.0/src/slice/rchunks.rs +0 -386
  414. data/ext/cargo-vendor/rayon-1.10.0/src/slice/test.rs +0 -216
  415. data/ext/cargo-vendor/rayon-1.10.0/src/str.rs +0 -1010
  416. data/ext/cargo-vendor/rayon-1.10.0/src/vec.rs +0 -283
  417. data/ext/cargo-vendor/rayon-1.10.0/tests/clones.rs +0 -222
  418. data/ext/cargo-vendor/rayon-1.10.0/tests/collect.rs +0 -113
  419. data/ext/cargo-vendor/rayon-1.10.0/tests/debug.rs +0 -233
  420. data/ext/cargo-vendor/rayon-1.10.0/tests/named-threads.rs +0 -25
  421. data/ext/cargo-vendor/rayon-1.10.0/tests/producer_split_at.rs +0 -391
  422. data/ext/cargo-vendor/rayon-1.10.0/tests/sort-panic-safe.rs +0 -167
  423. data/ext/cargo-vendor/rayon-1.10.0/tests/str.rs +0 -119
  424. data/ext/cargo-vendor/rayon-core-1.12.1/.cargo-checksum.json +0 -1
  425. data/ext/cargo-vendor/rayon-core-1.12.1/.cargo_vcs_info.json +0 -6
  426. data/ext/cargo-vendor/rayon-core-1.12.1/Cargo.toml +0 -88
  427. data/ext/cargo-vendor/rayon-core-1.12.1/Cargo.toml.orig +0 -68
  428. data/ext/cargo-vendor/rayon-core-1.12.1/README.md +0 -11
  429. data/ext/cargo-vendor/rayon-core-1.12.1/src/broadcast/mod.rs +0 -150
  430. data/ext/cargo-vendor/rayon-core-1.12.1/src/join/mod.rs +0 -188
  431. data/ext/cargo-vendor/rayon-core-1.12.1/src/join/test.rs +0 -151
  432. data/ext/cargo-vendor/rayon-core-1.12.1/src/latch.rs +0 -461
  433. data/ext/cargo-vendor/rayon-core-1.12.1/src/lib.rs +0 -875
  434. data/ext/cargo-vendor/rayon-core-1.12.1/src/registry.rs +0 -996
  435. data/ext/cargo-vendor/rayon-core-1.12.1/src/scope/mod.rs +0 -769
  436. data/ext/cargo-vendor/rayon-core-1.12.1/src/scope/test.rs +0 -619
  437. data/ext/cargo-vendor/rayon-core-1.12.1/src/sleep/README.md +0 -219
  438. data/ext/cargo-vendor/rayon-core-1.12.1/src/sleep/counters.rs +0 -277
  439. data/ext/cargo-vendor/rayon-core-1.12.1/src/sleep/mod.rs +0 -325
  440. data/ext/cargo-vendor/rayon-core-1.12.1/src/spawn/mod.rs +0 -163
  441. data/ext/cargo-vendor/rayon-core-1.12.1/src/spawn/test.rs +0 -255
  442. data/ext/cargo-vendor/rayon-core-1.12.1/src/test.rs +0 -200
  443. data/ext/cargo-vendor/rayon-core-1.12.1/src/thread_pool/mod.rs +0 -508
  444. data/ext/cargo-vendor/rayon-core-1.12.1/src/thread_pool/test.rs +0 -418
  445. data/ext/cargo-vendor/rayon-core-1.12.1/tests/use_current_thread.rs +0 -57
  446. data/ext/cargo-vendor/serde_json-1.0.142/.cargo-checksum.json +0 -1
  447. data/ext/cargo-vendor/serde_json-1.0.142/.cargo_vcs_info.json +0 -6
  448. data/ext/cargo-vendor/serde_json-1.0.142/.github/workflows/ci.yml +0 -158
  449. data/ext/cargo-vendor/serde_json-1.0.142/Cargo.lock +0 -419
  450. data/ext/cargo-vendor/serde_json-1.0.142/Cargo.toml +0 -157
  451. data/ext/cargo-vendor/serde_json-1.0.142/Cargo.toml.orig +0 -91
  452. data/ext/cargo-vendor/serde_json-1.0.142/src/lib.rs +0 -438
  453. data/ext/cargo-vendor/serde_json-1.0.142/src/map.rs +0 -1174
  454. data/ext/cargo-vendor/serde_json-1.0.142/src/ser.rs +0 -2285
  455. data/ext/cargo-vendor/serde_json-1.0.142/src/value/de.rs +0 -1500
  456. data/ext/cargo-vendor/tempfile-3.20.0/.cargo-checksum.json +0 -1
  457. data/ext/cargo-vendor/tempfile-3.20.0/.cargo_vcs_info.json +0 -6
  458. data/ext/cargo-vendor/tempfile-3.20.0/.github/workflows/ci.yml +0 -107
  459. data/ext/cargo-vendor/tempfile-3.20.0/CHANGELOG.md +0 -360
  460. data/ext/cargo-vendor/tempfile-3.20.0/Cargo.lock +0 -183
  461. data/ext/cargo-vendor/tempfile-3.20.0/Cargo.toml +0 -98
  462. data/ext/cargo-vendor/tempfile-3.20.0/Cargo.toml.orig +0 -47
  463. data/ext/cargo-vendor/winapi-util-0.1.9/.cargo-checksum.json +0 -1
  464. data/ext/cargo-vendor/winapi-util-0.1.9/.cargo_vcs_info.json +0 -6
  465. data/ext/cargo-vendor/winapi-util-0.1.9/Cargo.toml +0 -53
  466. data/ext/cargo-vendor/winapi-util-0.1.9/Cargo.toml.orig +0 -25
  467. data/ext/cargo-vendor/windows-sys-0.59.0/.cargo-checksum.json +0 -1
  468. data/ext/cargo-vendor/windows-sys-0.59.0/.cargo_vcs_info.json +0 -6
  469. data/ext/cargo-vendor/windows-sys-0.59.0/Cargo.toml +0 -298
  470. data/ext/cargo-vendor/windows-sys-0.59.0/Cargo.toml.orig +0 -274
  471. data/ext/cargo-vendor/windows-sys-0.59.0/license-apache-2.0 +0 -201
  472. data/ext/cargo-vendor/windows-sys-0.59.0/license-mit +0 -21
  473. data/ext/cargo-vendor/windows-sys-0.59.0/readme.md +0 -87
  474. data/ext/cargo-vendor/windows-sys-0.59.0/rustfmt.toml +0 -2
  475. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/Devices/Bluetooth/mod.rs +0 -32
  476. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/Devices/HumanInterfaceDevice/mod.rs +0 -39
  477. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/Devices/mod.rs +0 -4
  478. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/Foundation/mod.rs +0 -1317
  479. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/Graphics/Direct3D/mod.rs +0 -9170
  480. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/Graphics/mod.rs +0 -2
  481. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/NetworkManagement/Ndis/mod.rs +0 -3892
  482. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/NetworkManagement/WindowsFilteringPlatform/mod.rs +0 -269
  483. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/NetworkManagement/mod.rs +0 -4
  484. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/Storage/FileSystem/Minifilters/mod.rs +0 -1392
  485. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/Storage/FileSystem/mod.rs +0 -4503
  486. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/Storage/mod.rs +0 -2
  487. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/System/IO/mod.rs +0 -2
  488. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/System/Memory/mod.rs +0 -11
  489. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/System/OfflineRegistry/mod.rs +0 -28
  490. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/System/Registry/mod.rs +0 -180
  491. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/System/SystemInformation/mod.rs +0 -18
  492. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/System/SystemServices/mod.rs +0 -13663
  493. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/System/Threading/mod.rs +0 -155
  494. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/System/mod.rs +0 -14
  495. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Wdk/mod.rs +0 -12
  496. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Data/HtmlHelp/mod.rs +0 -447
  497. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Data/RightsManagement/mod.rs +0 -237
  498. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Data/mod.rs +0 -4
  499. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/AllJoyn/mod.rs +0 -1273
  500. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/BiometricFramework/mod.rs +0 -1481
  501. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/Bluetooth/mod.rs +0 -1419
  502. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/Communication/mod.rs +0 -312
  503. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/DeviceAndDriverInstallation/mod.rs +0 -3969
  504. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/DeviceQuery/mod.rs +0 -141
  505. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/Display/mod.rs +0 -3141
  506. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/Enumeration/Pnp/mod.rs +0 -96
  507. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/Enumeration/mod.rs +0 -2
  508. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/Fax/mod.rs +0 -1203
  509. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/HumanInterfaceDevice/mod.rs +0 -3684
  510. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/PortableDevices/mod.rs +0 -1999
  511. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/Properties/mod.rs +0 -261
  512. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/Pwm/mod.rs +0 -73
  513. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/Sensors/mod.rs +0 -687
  514. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/SerialCommunication/mod.rs +0 -230
  515. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/Tapi/mod.rs +0 -3217
  516. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/Usb/mod.rs +0 -2694
  517. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/WebServicesOnDevices/mod.rs +0 -660
  518. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Devices/mod.rs +0 -36
  519. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Foundation/mod.rs +0 -10318
  520. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Gaming/mod.rs +0 -99
  521. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Globalization/mod.rs +0 -5135
  522. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Graphics/Dwm/mod.rs +0 -232
  523. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Graphics/Gdi/mod.rs +0 -3857
  524. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Graphics/GdiPlus/mod.rs +0 -2307
  525. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Graphics/Hlsl/mod.rs +0 -2
  526. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Graphics/OpenGL/mod.rs +0 -1276
  527. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Graphics/Printing/PrintTicket/mod.rs +0 -28
  528. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Graphics/Printing/mod.rs +0 -4147
  529. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Graphics/mod.rs +0 -12
  530. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Management/MobileDeviceManagementRegistration/mod.rs +0 -101
  531. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Management/mod.rs +0 -2
  532. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Media/Audio/mod.rs +0 -2052
  533. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Media/DxMediaObjects/mod.rs +0 -94
  534. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Media/KernelStreaming/mod.rs +0 -5281
  535. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Media/Multimedia/mod.rs +0 -6442
  536. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Media/Streaming/mod.rs +0 -117
  537. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Media/WindowsMediaFormat/mod.rs +0 -910
  538. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Media/mod.rs +0 -187
  539. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/Dhcp/mod.rs +0 -1926
  540. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/Dns/mod.rs +0 -1564
  541. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/InternetConnectionWizard/mod.rs +0 -22
  542. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/IpHelper/mod.rs +0 -3004
  543. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/Multicast/mod.rs +0 -59
  544. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/Ndis/mod.rs +0 -3334
  545. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/NetBios/mod.rs +0 -211
  546. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/NetManagement/mod.rs +0 -4814
  547. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/NetShell/mod.rs +0 -160
  548. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/NetworkDiagnosticsFramework/mod.rs +0 -222
  549. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/P2P/mod.rs +0 -1196
  550. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/QoS/mod.rs +0 -1447
  551. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/Rras/mod.rs +0 -3212
  552. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/Snmp/mod.rs +0 -381
  553. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/WNet/mod.rs +0 -363
  554. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/WebDav/mod.rs +0 -47
  555. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/WiFi/mod.rs +0 -4311
  556. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/WindowsConnectionManager/mod.rs +0 -119
  557. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/WindowsFilteringPlatform/mod.rs +0 -3818
  558. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/WindowsFirewall/mod.rs +0 -281
  559. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/WindowsNetworkVirtualization/mod.rs +0 -104
  560. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/NetworkManagement/mod.rs +0 -42
  561. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Networking/ActiveDirectory/mod.rs +0 -2383
  562. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Networking/Clustering/mod.rs +0 -3900
  563. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Networking/HttpServer/mod.rs +0 -1239
  564. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Networking/Ldap/mod.rs +0 -817
  565. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Networking/WebSocket/mod.rs +0 -88
  566. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Networking/WinHttp/mod.rs +0 -1109
  567. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Networking/WinInet/mod.rs +0 -2168
  568. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Networking/WinSock/mod.rs +0 -4786
  569. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Networking/WindowsWebServices/mod.rs +0 -3480
  570. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Networking/mod.rs +0 -18
  571. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/AppLocker/mod.rs +0 -172
  572. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/Authentication/Identity/mod.rs +0 -5701
  573. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/Authentication/mod.rs +0 -2
  574. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/Authorization/mod.rs +0 -984
  575. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/Credentials/mod.rs +0 -797
  576. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/Cryptography/Catalog/mod.rs +0 -151
  577. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/Cryptography/Certificates/mod.rs +0 -2315
  578. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/Cryptography/Sip/mod.rs +0 -155
  579. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/Cryptography/UI/mod.rs +0 -545
  580. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/Cryptography/mod.rs +0 -8528
  581. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/DiagnosticDataQuery/mod.rs +0 -156
  582. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/DirectoryServices/mod.rs +0 -19
  583. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/EnterpriseData/mod.rs +0 -36
  584. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/ExtensibleAuthenticationProtocol/mod.rs +0 -998
  585. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/Isolation/mod.rs +0 -20
  586. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/LicenseProtection/mod.rs +0 -8
  587. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/NetworkAccessProtection/mod.rs +0 -149
  588. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/WinTrust/mod.rs +0 -863
  589. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/WinWlx/mod.rs +0 -335
  590. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Security/mod.rs +0 -1156
  591. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/Cabinets/mod.rs +0 -209
  592. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/CloudFilters/mod.rs +0 -666
  593. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/Compression/mod.rs +0 -36
  594. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/DistributedFileSystem/mod.rs +0 -342
  595. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/FileHistory/mod.rs +0 -97
  596. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/FileSystem/mod.rs +0 -3699
  597. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/Imapi/mod.rs +0 -697
  598. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/IndexServer/mod.rs +0 -279
  599. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/InstallableFileSystems/mod.rs +0 -331
  600. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/IscsiDisc/mod.rs +0 -1291
  601. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/Jet/mod.rs +0 -2593
  602. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/Nvme/mod.rs +0 -3428
  603. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/OfflineFiles/mod.rs +0 -276
  604. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/OperationRecorder/mod.rs +0 -20
  605. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/Packaging/Appx/mod.rs +0 -377
  606. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/Packaging/mod.rs +0 -2
  607. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/ProjectedFileSystem/mod.rs +0 -246
  608. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/StructuredStorage/mod.rs +0 -3
  609. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/Vhd/mod.rs +0 -720
  610. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/Xps/mod.rs +0 -415
  611. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Storage/mod.rs +0 -38
  612. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/AddressBook/mod.rs +0 -938
  613. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Antimalware/mod.rs +0 -112
  614. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/ApplicationInstallationAndServicing/mod.rs +0 -2145
  615. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/ApplicationVerifier/mod.rs +0 -58
  616. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/ClrHosting/mod.rs +0 -322
  617. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Com/Marshal/mod.rs +0 -172
  618. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Com/StructuredStorage/mod.rs +0 -655
  619. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Com/Urlmon/mod.rs +0 -905
  620. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Com/mod.rs +0 -1227
  621. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/ComponentServices/mod.rs +0 -574
  622. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Console/mod.rs +0 -373
  623. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/CorrelationVector/mod.rs +0 -15
  624. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/DataExchange/mod.rs +0 -428
  625. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/DeploymentServices/mod.rs +0 -565
  626. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/DeveloperLicensing/mod.rs +0 -3
  627. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Diagnostics/Ceip/mod.rs +0 -1
  628. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Diagnostics/Debug/Extensions/mod.rs +0 -3710
  629. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Diagnostics/Debug/mod.rs +0 -5557
  630. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Diagnostics/Etw/mod.rs +0 -2042
  631. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Diagnostics/ProcessSnapshotting/mod.rs +0 -293
  632. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Diagnostics/ToolHelp/mod.rs +0 -119
  633. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Diagnostics/TraceLogging/mod.rs +0 -105
  634. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Diagnostics/mod.rs +0 -12
  635. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/DistributedTransactionCoordinator/mod.rs +0 -308
  636. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Environment/mod.rs +0 -202
  637. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/ErrorReporting/mod.rs +0 -393
  638. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/EventCollector/mod.rs +0 -117
  639. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/EventLog/mod.rs +0 -379
  640. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/EventNotificationService/mod.rs +0 -35
  641. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/GroupPolicy/mod.rs +0 -424
  642. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/HostCompute/mod.rs +0 -1
  643. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/HostComputeNetwork/mod.rs +0 -86
  644. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/HostComputeSystem/mod.rs +0 -171
  645. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Hypervisor/mod.rs +0 -1983
  646. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/IO/mod.rs +0 -53
  647. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Iis/mod.rs +0 -1411
  648. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Ioctl/mod.rs +0 -6216
  649. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/JobObjects/mod.rs +0 -434
  650. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Js/mod.rs +0 -154
  651. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Kernel/mod.rs +0 -295
  652. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/LibraryLoader/mod.rs +0 -106
  653. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Mailslots/mod.rs +0 -6
  654. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Mapi/mod.rs +0 -150
  655. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Memory/NonVolatile/mod.rs +0 -20
  656. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Memory/mod.rs +0 -464
  657. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/MessageQueuing/mod.rs +0 -712
  658. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/MixedReality/mod.rs +0 -14
  659. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Ole/mod.rs +0 -2599
  660. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/PasswordManagement/mod.rs +0 -22
  661. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Performance/HardwareCounterProfiling/mod.rs +0 -27
  662. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Performance/mod.rs +0 -1091
  663. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Pipes/mod.rs +0 -42
  664. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Power/mod.rs +0 -1413
  665. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/ProcessStatus/mod.rs +0 -200
  666. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Recovery/mod.rs +0 -15
  667. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Registry/mod.rs +0 -1114
  668. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/RemoteDesktop/mod.rs +0 -1771
  669. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/RemoteManagement/mod.rs +0 -935
  670. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/RestartManager/mod.rs +0 -86
  671. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Restore/mod.rs +0 -66
  672. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Rpc/mod.rs +0 -2668
  673. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Search/Common/mod.rs +0 -21
  674. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Search/mod.rs +0 -5993
  675. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/SecurityCenter/mod.rs +0 -41
  676. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Services/mod.rs +0 -587
  677. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/SetupAndMigration/mod.rs +0 -4
  678. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Shutdown/mod.rs +0 -111
  679. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/StationsAndDesktops/mod.rs +0 -99
  680. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/SubsystemForLinux/mod.rs +0 -12
  681. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/SystemInformation/mod.rs +0 -751
  682. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/SystemServices/mod.rs +0 -4541
  683. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Threading/mod.rs +0 -1148
  684. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Time/mod.rs +0 -50
  685. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/TpmBaseServices/mod.rs +0 -89
  686. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/UserAccessLogging/mod.rs +0 -17
  687. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Variant/mod.rs +0 -321
  688. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/VirtualDosMachines/mod.rs +0 -297
  689. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/WindowsProgramming/mod.rs +0 -1633
  690. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/Wmi/mod.rs +0 -2435
  691. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/System/mod.rs +0 -132
  692. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/Accessibility/mod.rs +0 -1788
  693. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/ColorSystem/mod.rs +0 -702
  694. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/Controls/Dialogs/mod.rs +0 -1128
  695. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/Controls/mod.rs +0 -7276
  696. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/HiDpi/mod.rs +0 -66
  697. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/Input/Ime/mod.rs +0 -1394
  698. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/Input/KeyboardAndMouse/mod.rs +0 -765
  699. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/Input/Pointer/mod.rs +0 -168
  700. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/Input/Touch/mod.rs +0 -89
  701. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/Input/XboxController/mod.rs +0 -151
  702. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/Input/mod.rs +0 -182
  703. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/InteractionContext/mod.rs +0 -230
  704. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/Magnification/mod.rs +0 -52
  705. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/Shell/Common/mod.rs +0 -104
  706. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/Shell/PropertiesSystem/mod.rs +0 -322
  707. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/Shell/mod.rs +0 -6704
  708. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/TabletPC/mod.rs +0 -1537
  709. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/TextServices/mod.rs +0 -794
  710. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/WindowsAndMessaging/mod.rs +0 -3760
  711. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/UI/mod.rs +0 -22
  712. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Web/InternetExplorer/mod.rs +0 -628
  713. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/Web/mod.rs +0 -2
  714. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/Win32/mod.rs +0 -30
  715. data/ext/cargo-vendor/windows-sys-0.59.0/src/Windows/mod.rs +0 -4
  716. data/ext/cargo-vendor/windows-sys-0.59.0/src/core/literals.rs +0 -114
  717. data/ext/cargo-vendor/windows-sys-0.59.0/src/core/mod.rs +0 -33
  718. data/ext/cargo-vendor/windows-sys-0.59.0/src/includes/Win32/UI/WindowsAndMessaging/WindowLong.rs +0 -8
  719. data/ext/cargo-vendor/windows-sys-0.59.0/src/lib.rs +0 -17
  720. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/.github/workflows/audit.yml +0 -0
  721. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/.github/workflows/ci.yml +0 -0
  722. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/.github/workflows/dotslash-config.json +0 -0
  723. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/.rustfmt.toml +0 -0
  724. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/.rusty-hook.toml +0 -0
  725. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/dev/run_benchmarks_for_file.sh +0 -0
  726. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/src/cache/mod.rs +0 -0
  727. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/src/cache/noop.rs +0 -0
  728. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/src/ownership/file_owner_finder.rs +0 -0
  729. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/src/ownership/mapper/directory_mapper.rs +0 -0
  730. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/src/ownership/mapper/escaper.rs +0 -0
  731. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/src/ownership/mapper/team_gem_mapper.rs +0 -0
  732. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/src/ownership/mapper/team_glob_mapper.rs +0 -0
  733. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/src/ownership/mapper/team_yml_mapper.rs +0 -0
  734. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/cache_test.rs +0 -0
  735. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/invalid_project/.github/CODEOWNERS +0 -0
  736. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/invalid_project/config/code_ownership.yml +0 -0
  737. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/invalid_project/config/teams/payments.yml +0 -0
  738. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/invalid_project/config/teams/payroll.yml +0 -0
  739. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/invalid_project/gems/payroll_calculator/calculator.rb +0 -0
  740. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/invalid_project/ruby/app/models/bank_account.rb +0 -0
  741. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/invalid_project/ruby/app/models/blockchain.rb +0 -0
  742. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/invalid_project/ruby/app/models/payroll.rb +0 -0
  743. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/invalid_project/ruby/app/payments/nacha.rb +0 -0
  744. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/invalid_project/ruby/app/services/.codeowner +0 -0
  745. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/invalid_project/ruby/app/services/multi_owned.rb +0 -0
  746. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/invalid_project/ruby/app/unowned.rb +0 -0
  747. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/invalid_project/ruby/packages/payroll_flow/package.yml +0 -0
  748. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/multiple-directory-owners/.github/CODEOWNERS +0 -0
  749. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/multiple-directory-owners/app/consumers/.codeowner +0 -0
  750. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/multiple-directory-owners/app/consumers/deep/nesting/nestdir/deep_file.rb +0 -0
  751. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/multiple-directory-owners/app/consumers/one_owner.rb +0 -0
  752. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/multiple-directory-owners/app/services/.codeowner +0 -0
  753. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/multiple-directory-owners/app/services/exciting/.codeowner +0 -0
  754. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/multiple-directory-owners/app/services/exciting/some_other_file.rb +0 -0
  755. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/multiple-directory-owners/config/teams/bar.yml +0 -0
  756. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/multiple-directory-owners/config/teams/foo.yml +0 -0
  757. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/.ignore +0 -0
  758. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/config/teams/payments.yml +0 -0
  759. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/config/teams/payroll.yml +0 -0
  760. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/config/teams/ux.yml +0 -0
  761. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/gems/payroll_calculator/calculator.rb +0 -0
  762. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/gems/pets/dog.rb +0 -0
  763. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/javascript/packages/PayrollFlow/index.tsx +0 -0
  764. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/javascript/packages/PayrollFlow/package.json +0 -0
  765. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/javascript/packages/items/(special)/.codeowner +0 -0
  766. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/javascript/packages/items/(special)/pay.ts +0 -0
  767. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/javascript/packages/items/.codeowner +0 -0
  768. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/javascript/packages/items/item.ts +0 -0
  769. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/ruby/app/models/bank_account.rb +0 -0
  770. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/ruby/app/payments/foo/.codeowner +0 -0
  771. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/ruby/app/payments/foo/ownedby_payroll.rb +0 -0
  772. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/ruby/app/payments/nacha.rb +0 -0
  773. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/ruby/app/payroll/.codeowner +0 -0
  774. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/ruby/app/payroll/payroll.rb +0 -0
  775. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/ruby/ignored_files/git_ignored.rb +0 -0
  776. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/ruby/packages/payroll_flow/package.yml +0 -0
  777. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/fixtures/valid_project/should_be_ignored/an_ignored_file.rb +0 -0
  778. /data/ext/cargo-vendor/{codeowners-0.2.7/tmp/.gitkeep → codeowners-0.2.17/tests/fixtures/valid_project_with_overrides/packs/games/app/services/stats.rb} +0 -0
  779. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/git_stage_test.rs +0 -0
  780. /data/ext/cargo-vendor/{codeowners-0.2.7 → codeowners-0.2.17}/tests/invalid_project_structure_test.rs +0 -0
  781. /data/ext/cargo-vendor/{glob-0.3.2 → glob-0.3.3}/.github/dependabot.yml +0 -0
  782. /data/ext/cargo-vendor/{glob-0.3.2 → glob-0.3.3}/.github/workflows/publish.yml +0 -0
  783. /data/ext/cargo-vendor/{glob-0.3.2 → glob-0.3.3}/LICENSE-APACHE +0 -0
  784. /data/ext/cargo-vendor/{glob-0.3.2 → glob-0.3.3}/LICENSE-MIT +0 -0
  785. /data/ext/cargo-vendor/{glob-0.3.2 → glob-0.3.3}/triagebot.toml +0 -0
  786. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/.rustfmt.toml +0 -0
  787. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/LICENSE-APACHE +0 -0
  788. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/LICENSE-MIT +0 -0
  789. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/README.md +0 -0
  790. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/benches/bench.rs +0 -0
  791. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/benches/faststring.rs +0 -0
  792. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/src/arbitrary.rs +0 -0
  793. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/src/borsh.rs +0 -0
  794. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/src/macros.rs +0 -0
  795. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/src/map/core/extract.rs +0 -0
  796. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/src/map/core/raw_entry_v1.rs +0 -0
  797. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/src/map/iter.rs +0 -0
  798. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/src/map/serde_seq.rs +0 -0
  799. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/src/rayon/mod.rs +0 -0
  800. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/src/serde.rs +0 -0
  801. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/src/set/iter.rs +0 -0
  802. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/src/util.rs +0 -0
  803. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/tests/equivalent_trait.rs +0 -0
  804. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/tests/macros_full_path.rs +0 -0
  805. /data/ext/cargo-vendor/{indexmap-2.10.0 → indexmap-2.11.0}/tests/tests.rs +0 -0
  806. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/LICENSE-APACHE +0 -0
  807. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/LICENSE-MIT +0 -0
  808. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/compile_fail/cannot_collect_filtermap_data.rs +0 -0
  809. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/compile_fail/cannot_zip_filtered_data.rs +0 -0
  810. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/compile_fail/cell_par_iter.rs +0 -0
  811. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/compile_fail/mod.rs +0 -0
  812. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/compile_fail/must_use.rs +0 -0
  813. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/compile_fail/no_send_par_iter.rs +0 -0
  814. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/compile_fail/rc_par_iter.rs +0 -0
  815. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/delegate.rs +0 -0
  816. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/iter/collect/consumer.rs +0 -0
  817. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/iter/extend.rs +0 -0
  818. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/iter/find.rs +0 -0
  819. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/iter/for_each.rs +0 -0
  820. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/iter/noop.rs +0 -0
  821. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/iter/plumbing/README.md +0 -0
  822. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/iter/product.rs +0 -0
  823. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/iter/reduce.rs +0 -0
  824. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/iter/sum.rs +0 -0
  825. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/iter/try_reduce.rs +0 -0
  826. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/iter/try_reduce_with.rs +0 -0
  827. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/par_either.rs +0 -0
  828. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/prelude.rs +0 -0
  829. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/private.rs +0 -0
  830. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/split_producer.rs +0 -0
  831. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/src/string.rs +0 -0
  832. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/tests/chars.rs +0 -0
  833. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/tests/cross-pool.rs +0 -0
  834. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/tests/drain_vec.rs +0 -0
  835. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/tests/intersperse.rs +0 -0
  836. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/tests/issue671-unzip.rs +0 -0
  837. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/tests/issue671.rs +0 -0
  838. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/tests/iter_panic.rs +0 -0
  839. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/tests/octillion.rs +0 -0
  840. /data/ext/cargo-vendor/{rayon-1.10.0 → rayon-1.11.0}/tests/par_bridge_recursion.rs +0 -0
  841. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/LICENSE-APACHE +0 -0
  842. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/LICENSE-MIT +0 -0
  843. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/build.rs +0 -0
  844. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/src/broadcast/test.rs +0 -0
  845. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/src/compile_fail/mod.rs +0 -0
  846. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/src/compile_fail/quicksort_race1.rs +0 -0
  847. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/src/compile_fail/quicksort_race2.rs +0 -0
  848. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/src/compile_fail/quicksort_race3.rs +0 -0
  849. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/src/compile_fail/rc_return.rs +0 -0
  850. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/src/compile_fail/rc_upvar.rs +0 -0
  851. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/src/compile_fail/scope_join_bad.rs +0 -0
  852. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/src/job.rs +0 -0
  853. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/src/private.rs +0 -0
  854. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/src/unwind.rs +0 -0
  855. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/tests/double_init_fail.rs +0 -0
  856. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/tests/init_zero_threads.rs +0 -0
  857. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/tests/scope_join.rs +0 -0
  858. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/tests/scoped_threadpool.rs +0 -0
  859. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/tests/simple_panic.rs +0 -0
  860. /data/ext/cargo-vendor/{rayon-core-1.12.1 → rayon-core-1.13.0}/tests/stack_overflow_crash.rs +0 -0
  861. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/CONTRIBUTING.md +0 -0
  862. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/LICENSE-APACHE +0 -0
  863. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/LICENSE-MIT +0 -0
  864. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/README.md +0 -0
  865. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/build.rs +0 -0
  866. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/de.rs +0 -0
  867. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/error.rs +0 -0
  868. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/io/core.rs +0 -0
  869. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/io/mod.rs +0 -0
  870. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/iter.rs +0 -0
  871. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/algorithm.rs +0 -0
  872. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/bhcomp.rs +0 -0
  873. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/bignum.rs +0 -0
  874. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/cached.rs +0 -0
  875. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/cached_float80.rs +0 -0
  876. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/digit.rs +0 -0
  877. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/errors.rs +0 -0
  878. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/exponent.rs +0 -0
  879. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/float.rs +0 -0
  880. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/large_powers.rs +0 -0
  881. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/large_powers32.rs +0 -0
  882. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/large_powers64.rs +0 -0
  883. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/math.rs +0 -0
  884. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/mod.rs +0 -0
  885. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/num.rs +0 -0
  886. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/parse.rs +0 -0
  887. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/rounding.rs +0 -0
  888. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/shift.rs +0 -0
  889. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/lexical/small_powers.rs +0 -0
  890. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/macros.rs +0 -0
  891. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/number.rs +0 -0
  892. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/raw.rs +0 -0
  893. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/read.rs +0 -0
  894. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/value/from.rs +0 -0
  895. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/value/index.rs +0 -0
  896. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/value/mod.rs +0 -0
  897. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/value/partial_eq.rs +0 -0
  898. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/src/value/ser.rs +0 -0
  899. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/compiletest.rs +0 -0
  900. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/debug.rs +0 -0
  901. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/lexical/algorithm.rs +0 -0
  902. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/lexical/exponent.rs +0 -0
  903. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/lexical/float.rs +0 -0
  904. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/lexical/math.rs +0 -0
  905. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/lexical/num.rs +0 -0
  906. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/lexical/parse.rs +0 -0
  907. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/lexical/rounding.rs +0 -0
  908. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/lexical.rs +0 -0
  909. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/macros/mod.rs +0 -0
  910. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/map.rs +0 -0
  911. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/regression/issue1004.rs +0 -0
  912. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/regression/issue520.rs +0 -0
  913. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/regression/issue795.rs +0 -0
  914. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/regression/issue845.rs +0 -0
  915. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/regression/issue953.rs +0 -0
  916. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/regression.rs +0 -0
  917. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/stream.rs +0 -0
  918. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/test.rs +0 -0
  919. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/missing_colon.rs +0 -0
  920. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/missing_colon.stderr +0 -0
  921. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/missing_comma.rs +0 -0
  922. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/missing_comma.stderr +0 -0
  923. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/missing_value.rs +0 -0
  924. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/missing_value.stderr +0 -0
  925. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/not_found.rs +0 -0
  926. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/not_found.stderr +0 -0
  927. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/parse_expr.rs +0 -0
  928. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/parse_expr.stderr +0 -0
  929. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/parse_key.rs +0 -0
  930. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/parse_key.stderr +0 -0
  931. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/unexpected_after_array_element.rs +0 -0
  932. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/unexpected_after_array_element.stderr +0 -0
  933. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/unexpected_after_map_entry.rs +0 -0
  934. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/unexpected_after_map_entry.stderr +0 -0
  935. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/unexpected_colon.rs +0 -0
  936. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/unexpected_colon.stderr +0 -0
  937. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/unexpected_comma.rs +0 -0
  938. /data/ext/cargo-vendor/{serde_json-1.0.142 → serde_json-1.0.143}/tests/ui/unexpected_comma.stderr +0 -0
  939. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/.github/dependabot.yml +0 -0
  940. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/LICENSE-APACHE +0 -0
  941. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/LICENSE-MIT +0 -0
  942. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/README.md +0 -0
  943. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/deny.toml +0 -0
  944. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/dir/imp/any.rs +0 -0
  945. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/dir/imp/mod.rs +0 -0
  946. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/dir/imp/unix.rs +0 -0
  947. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/dir/mod.rs +0 -0
  948. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/env.rs +0 -0
  949. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/error.rs +0 -0
  950. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/file/imp/mod.rs +0 -0
  951. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/file/imp/other.rs +0 -0
  952. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/file/imp/unix.rs +0 -0
  953. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/file/imp/windows.rs +0 -0
  954. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/file/mod.rs +0 -0
  955. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/lib.rs +0 -0
  956. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/spooled.rs +0 -0
  957. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/src/util.rs +0 -0
  958. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/tests/env.rs +0 -0
  959. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/tests/namedtempfile.rs +0 -0
  960. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/tests/spooled.rs +0 -0
  961. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/tests/tempdir.rs +0 -0
  962. /data/ext/cargo-vendor/{tempfile-3.20.0 → tempfile-3.21.0}/tests/tempfile.rs +0 -0
  963. /data/ext/cargo-vendor/{winapi-util-0.1.9 → winapi-util-0.1.10}/.github/workflows/ci.yml +0 -0
  964. /data/ext/cargo-vendor/{winapi-util-0.1.9 → winapi-util-0.1.10}/COPYING +0 -0
  965. /data/ext/cargo-vendor/{winapi-util-0.1.9 → winapi-util-0.1.10}/LICENSE-MIT +0 -0
  966. /data/ext/cargo-vendor/{winapi-util-0.1.9 → winapi-util-0.1.10}/README.md +0 -0
  967. /data/ext/cargo-vendor/{winapi-util-0.1.9 → winapi-util-0.1.10}/UNLICENSE +0 -0
  968. /data/ext/cargo-vendor/{winapi-util-0.1.9 → winapi-util-0.1.10}/rustfmt.toml +0 -0
  969. /data/ext/cargo-vendor/{winapi-util-0.1.9 → winapi-util-0.1.10}/src/console.rs +0 -0
  970. /data/ext/cargo-vendor/{winapi-util-0.1.9 → winapi-util-0.1.10}/src/file.rs +0 -0
  971. /data/ext/cargo-vendor/{winapi-util-0.1.9 → winapi-util-0.1.10}/src/lib.rs +0 -0
  972. /data/ext/cargo-vendor/{winapi-util-0.1.9 → winapi-util-0.1.10}/src/sysinfo.rs +0 -0
  973. /data/ext/cargo-vendor/{winapi-util-0.1.9 → winapi-util-0.1.10}/src/win.rs +0 -0
@@ -0,0 +1,2392 @@
1
+ use std::sync::atomic::{AtomicUsize, Ordering};
2
+
3
+ use super::*;
4
+ use crate::prelude::*;
5
+ use rayon_core::*;
6
+
7
+ use rand::distr::StandardUniform;
8
+ use rand::{Rng, SeedableRng};
9
+ use rand_xorshift::XorShiftRng;
10
+ use std::collections::{BTreeMap, BTreeSet, HashMap, HashSet};
11
+ use std::collections::{BinaryHeap, VecDeque};
12
+ use std::ffi::OsStr;
13
+ use std::fmt::Debug;
14
+ use std::sync::mpsc;
15
+
16
+ fn is_indexed<T: IndexedParallelIterator>(_: T) {}
17
+
18
+ fn seeded_rng() -> XorShiftRng {
19
+ let mut seed = <XorShiftRng as SeedableRng>::Seed::default();
20
+ (0..).zip(seed.as_mut()).for_each(|(i, x)| *x = i);
21
+ XorShiftRng::from_seed(seed)
22
+ }
23
+
24
+ #[test]
25
+ fn execute() {
26
+ let a: Vec<i32> = (0..1024).collect();
27
+ let mut b = vec![];
28
+ a.par_iter().map(|&i| i + 1).collect_into_vec(&mut b);
29
+ let c: Vec<i32> = (0..1024).map(|i| i + 1).collect();
30
+ assert_eq!(b, c);
31
+ }
32
+
33
+ #[test]
34
+ fn execute_cloned() {
35
+ let a: Vec<i32> = (0..1024).collect();
36
+ let mut b: Vec<i32> = vec![];
37
+ a.par_iter().cloned().collect_into_vec(&mut b);
38
+ let c: Vec<i32> = (0..1024).collect();
39
+ assert_eq!(b, c);
40
+ }
41
+
42
+ #[test]
43
+ fn execute_range() {
44
+ let a = 0i32..1024;
45
+ let mut b = vec![];
46
+ a.into_par_iter().map(|i| i + 1).collect_into_vec(&mut b);
47
+ let c: Vec<i32> = (0..1024).map(|i| i + 1).collect();
48
+ assert_eq!(b, c);
49
+ }
50
+
51
+ #[test]
52
+ fn execute_unindexed_range() {
53
+ let a = 0i64..1024;
54
+ let b: LinkedList<i64> = a.into_par_iter().map(|i| i + 1).collect();
55
+ let c: LinkedList<i64> = (0..1024).map(|i| i + 1).collect();
56
+ assert_eq!(b, c);
57
+ }
58
+
59
+ #[test]
60
+ fn execute_pseudo_indexed_range() {
61
+ let range = i128::MAX - 1024..i128::MAX;
62
+
63
+ // Given `Some` length, collecting `Vec` will try to act indexed.
64
+ let a = range.clone().into_par_iter();
65
+ assert_eq!(a.opt_len(), Some(1024));
66
+
67
+ let b: Vec<i128> = a.map(|i| i + 1).collect();
68
+ let c: Vec<i128> = range.map(|i| i + 1).collect();
69
+ assert_eq!(b, c);
70
+ }
71
+
72
+ #[test]
73
+ fn check_map_indexed() {
74
+ let a = [1, 2, 3];
75
+ is_indexed(a.par_iter().map(|x| x));
76
+ }
77
+
78
+ #[test]
79
+ fn map_sum() {
80
+ let a: Vec<i32> = (0..1024).collect();
81
+ let r1: i32 = a.par_iter().map(|&i| i + 1).sum();
82
+ let r2 = a.iter().map(|&i| i + 1).sum();
83
+ assert_eq!(r1, r2);
84
+ }
85
+
86
+ #[test]
87
+ fn map_reduce() {
88
+ let a: Vec<i32> = (0..1024).collect();
89
+ let r1 = a.par_iter().map(|&i| i + 1).reduce(|| 0, |i, j| i + j);
90
+ let r2 = a.iter().map(|&i| i + 1).sum();
91
+ assert_eq!(r1, r2);
92
+ }
93
+
94
+ #[test]
95
+ fn map_reduce_with() {
96
+ let a: Vec<i32> = (0..1024).collect();
97
+ let r1 = a.par_iter().map(|&i| i + 1).reduce_with(|i, j| i + j);
98
+ let r2 = a.iter().map(|&i| i + 1).sum();
99
+ assert_eq!(r1, Some(r2));
100
+ }
101
+
102
+ #[test]
103
+ fn fold_map_reduce() {
104
+ // Kind of a weird test, but it demonstrates various
105
+ // transformations that are taking place. Relies on
106
+ // `with_max_len(1).fold()` being equivalent to `map()`.
107
+ //
108
+ // Take each number from 0 to 32 and fold them by appending to a
109
+ // vector. Because of `with_max_len(1)`, this will produce 32 vectors,
110
+ // each with one item. We then collect all of these into an
111
+ // individual vector by mapping each into their own vector (so we
112
+ // have Vec<Vec<i32>>) and then reducing those into a single
113
+ // vector.
114
+ let r1 = (0_i32..32)
115
+ .into_par_iter()
116
+ .with_max_len(1)
117
+ .fold(Vec::new, |mut v, e| {
118
+ v.push(e);
119
+ v
120
+ })
121
+ .map(|v| vec![v])
122
+ .reduce_with(|mut v_a, v_b| {
123
+ v_a.extend(v_b);
124
+ v_a
125
+ });
126
+ assert_eq!(
127
+ r1,
128
+ Some(vec![
129
+ vec![0],
130
+ vec![1],
131
+ vec![2],
132
+ vec![3],
133
+ vec![4],
134
+ vec![5],
135
+ vec![6],
136
+ vec![7],
137
+ vec![8],
138
+ vec![9],
139
+ vec![10],
140
+ vec![11],
141
+ vec![12],
142
+ vec![13],
143
+ vec![14],
144
+ vec![15],
145
+ vec![16],
146
+ vec![17],
147
+ vec![18],
148
+ vec![19],
149
+ vec![20],
150
+ vec![21],
151
+ vec![22],
152
+ vec![23],
153
+ vec![24],
154
+ vec![25],
155
+ vec![26],
156
+ vec![27],
157
+ vec![28],
158
+ vec![29],
159
+ vec![30],
160
+ vec![31]
161
+ ])
162
+ );
163
+ }
164
+
165
+ #[test]
166
+ fn fold_is_full() {
167
+ let counter = AtomicUsize::new(0);
168
+ let a = (0_i32..2048)
169
+ .into_par_iter()
170
+ .inspect(|_| {
171
+ counter.fetch_add(1, Ordering::SeqCst);
172
+ })
173
+ .fold(|| 0, |a, b| a + b)
174
+ .find_any(|_| true);
175
+ assert!(a.is_some());
176
+ assert!(counter.load(Ordering::SeqCst) < 2048); // should not have visited every single one
177
+ }
178
+
179
+ #[test]
180
+ fn check_step_by() {
181
+ let a: Vec<i32> = (0..1024).step_by(2).collect();
182
+ let b: Vec<i32> = (0..1024).into_par_iter().step_by(2).collect();
183
+
184
+ assert_eq!(a, b);
185
+ }
186
+
187
+ #[test]
188
+ fn check_step_by_unaligned() {
189
+ let a: Vec<i32> = (0..1029).step_by(10).collect();
190
+ let b: Vec<i32> = (0..1029).into_par_iter().step_by(10).collect();
191
+
192
+ assert_eq!(a, b)
193
+ }
194
+
195
+ #[test]
196
+ fn check_step_by_rev() {
197
+ let a: Vec<i32> = (0..1024).step_by(2).rev().collect();
198
+ let b: Vec<i32> = (0..1024).into_par_iter().step_by(2).rev().collect();
199
+
200
+ assert_eq!(a, b);
201
+ }
202
+
203
+ #[test]
204
+ fn check_enumerate() {
205
+ let a: Vec<usize> = (0..1024).rev().collect();
206
+
207
+ let mut b = vec![];
208
+ a.par_iter()
209
+ .enumerate()
210
+ .map(|(i, &x)| i + x)
211
+ .collect_into_vec(&mut b);
212
+ assert!(b.iter().all(|&x| x == a.len() - 1));
213
+ }
214
+
215
+ #[test]
216
+ fn check_enumerate_rev() {
217
+ let a: Vec<usize> = (0..1024).rev().collect();
218
+
219
+ let mut b = vec![];
220
+ a.par_iter()
221
+ .enumerate()
222
+ .rev()
223
+ .map(|(i, &x)| i + x)
224
+ .collect_into_vec(&mut b);
225
+ assert!(b.iter().all(|&x| x == a.len() - 1));
226
+ }
227
+
228
+ #[test]
229
+ fn check_indices_after_enumerate_split() {
230
+ let a: Vec<i32> = (0..1024).collect();
231
+ a.par_iter().enumerate().with_producer(WithProducer);
232
+
233
+ struct WithProducer;
234
+ impl<'a> ProducerCallback<(usize, &'a i32)> for WithProducer {
235
+ type Output = ();
236
+ fn callback<P>(self, producer: P)
237
+ where
238
+ P: Producer<Item = (usize, &'a i32)>,
239
+ {
240
+ let (a, b) = producer.split_at(512);
241
+ for ((index, value), trusted_index) in a.into_iter().zip(0..) {
242
+ assert_eq!(index, trusted_index);
243
+ assert_eq!(index, *value as usize);
244
+ }
245
+ for ((index, value), trusted_index) in b.into_iter().zip(512..) {
246
+ assert_eq!(index, trusted_index);
247
+ assert_eq!(index, *value as usize);
248
+ }
249
+ }
250
+ }
251
+ }
252
+
253
+ #[test]
254
+ fn check_increment() {
255
+ let mut a: Vec<usize> = (0..1024).rev().collect();
256
+
257
+ a.par_iter_mut().enumerate().for_each(|(i, v)| *v += i);
258
+
259
+ assert!(a.iter().all(|&x| x == a.len() - 1));
260
+ }
261
+
262
+ #[test]
263
+ fn check_skip() {
264
+ let a: Vec<usize> = (0..1024).collect();
265
+
266
+ let mut v1 = Vec::new();
267
+ a.par_iter().skip(16).collect_into_vec(&mut v1);
268
+ let v2 = a.iter().skip(16).collect::<Vec<_>>();
269
+ assert_eq!(v1, v2);
270
+
271
+ let mut v1 = Vec::new();
272
+ a.par_iter().skip(2048).collect_into_vec(&mut v1);
273
+ let v2 = a.iter().skip(2048).collect::<Vec<_>>();
274
+ assert_eq!(v1, v2);
275
+
276
+ let mut v1 = Vec::new();
277
+ a.par_iter().skip(0).collect_into_vec(&mut v1);
278
+ #[allow(clippy::iter_skip_zero)]
279
+ let v2 = a.iter().skip(0).collect::<Vec<_>>();
280
+ assert_eq!(v1, v2);
281
+
282
+ // Check that the skipped elements side effects are executed
283
+ use std::sync::atomic::{AtomicUsize, Ordering};
284
+ let num = AtomicUsize::new(0);
285
+ a.par_iter()
286
+ .map(|&n| num.fetch_add(n, Ordering::Relaxed))
287
+ .skip(512)
288
+ .count();
289
+ assert_eq!(num.load(Ordering::Relaxed), a.iter().sum::<usize>());
290
+ }
291
+
292
+ #[test]
293
+ fn check_take() {
294
+ let a: Vec<usize> = (0..1024).collect();
295
+
296
+ let mut v1 = Vec::new();
297
+ a.par_iter().take(16).collect_into_vec(&mut v1);
298
+ let v2 = a.iter().take(16).collect::<Vec<_>>();
299
+ assert_eq!(v1, v2);
300
+
301
+ let mut v1 = Vec::new();
302
+ a.par_iter().take(2048).collect_into_vec(&mut v1);
303
+ let v2 = a.iter().take(2048).collect::<Vec<_>>();
304
+ assert_eq!(v1, v2);
305
+
306
+ let mut v1 = Vec::new();
307
+ a.par_iter().take(0).collect_into_vec(&mut v1);
308
+ let v2 = a.iter().take(0).collect::<Vec<_>>();
309
+ assert_eq!(v1, v2);
310
+ }
311
+
312
+ #[test]
313
+ fn check_inspect() {
314
+ use std::sync::atomic::{AtomicUsize, Ordering};
315
+
316
+ let a = AtomicUsize::new(0);
317
+ let b: usize = (0_usize..1024)
318
+ .into_par_iter()
319
+ .inspect(|&i| {
320
+ a.fetch_add(i, Ordering::Relaxed);
321
+ })
322
+ .sum();
323
+
324
+ assert_eq!(a.load(Ordering::Relaxed), b);
325
+ }
326
+
327
+ #[test]
328
+ fn check_move() {
329
+ let a = vec![vec![1, 2, 3]];
330
+ let ptr = a[0].as_ptr();
331
+
332
+ let mut b = vec![];
333
+ a.into_par_iter().collect_into_vec(&mut b);
334
+
335
+ // a simple move means the inner vec will be completely unchanged
336
+ assert_eq!(ptr, b[0].as_ptr());
337
+ }
338
+
339
+ #[test]
340
+ fn check_drops() {
341
+ use std::sync::atomic::{AtomicUsize, Ordering};
342
+
343
+ let c = AtomicUsize::new(0);
344
+ let a = vec![DropCounter(&c); 10];
345
+
346
+ let mut b = vec![];
347
+ a.clone().into_par_iter().collect_into_vec(&mut b);
348
+ assert_eq!(c.load(Ordering::Relaxed), 0);
349
+
350
+ b.into_par_iter();
351
+ assert_eq!(c.load(Ordering::Relaxed), 10);
352
+
353
+ a.into_par_iter().with_producer(Partial);
354
+ assert_eq!(c.load(Ordering::Relaxed), 20);
355
+
356
+ #[derive(Clone)]
357
+ struct DropCounter<'a>(&'a AtomicUsize);
358
+ impl<'a> Drop for DropCounter<'a> {
359
+ fn drop(&mut self) {
360
+ self.0.fetch_add(1, Ordering::Relaxed);
361
+ }
362
+ }
363
+
364
+ struct Partial;
365
+ impl<'a> ProducerCallback<DropCounter<'a>> for Partial {
366
+ type Output = ();
367
+ fn callback<P>(self, producer: P)
368
+ where
369
+ P: Producer<Item = DropCounter<'a>>,
370
+ {
371
+ let (a, _) = producer.split_at(5);
372
+ a.into_iter().next();
373
+ }
374
+ }
375
+ }
376
+
377
+ #[test]
378
+ fn check_slice_indexed() {
379
+ let a = vec![1, 2, 3];
380
+ is_indexed(a.par_iter());
381
+ }
382
+
383
+ #[test]
384
+ fn check_slice_mut_indexed() {
385
+ let mut a = vec![1, 2, 3];
386
+ is_indexed(a.par_iter_mut());
387
+ }
388
+
389
+ #[test]
390
+ fn check_vec_indexed() {
391
+ let a = vec![1, 2, 3];
392
+ is_indexed(a.into_par_iter());
393
+ }
394
+
395
+ #[test]
396
+ fn check_range_indexed() {
397
+ is_indexed((1..5).into_par_iter());
398
+ }
399
+
400
+ #[test]
401
+ fn check_cmp_direct() {
402
+ let a = (0..1024).into_par_iter();
403
+ let b = (0..1024).into_par_iter();
404
+
405
+ let result = a.cmp(b);
406
+
407
+ assert!(result == ::std::cmp::Ordering::Equal);
408
+ }
409
+
410
+ #[test]
411
+ fn check_cmp_to_seq() {
412
+ assert_eq!(
413
+ (0..1024).into_par_iter().cmp(0..1024),
414
+ (0..1024).cmp(0..1024)
415
+ );
416
+ }
417
+
418
+ #[test]
419
+ fn check_cmp_rng_to_seq() {
420
+ let mut rng = seeded_rng();
421
+ let rng = &mut rng;
422
+ let a: Vec<i32> = rng.sample_iter(&StandardUniform).take(1024).collect();
423
+ let b: Vec<i32> = rng.sample_iter(&StandardUniform).take(1024).collect();
424
+ for i in 0..a.len() {
425
+ let par_result = a[i..].par_iter().cmp(b[i..].par_iter());
426
+ let seq_result = a[i..].iter().cmp(b[i..].iter());
427
+
428
+ assert_eq!(par_result, seq_result);
429
+ }
430
+ }
431
+
432
+ #[test]
433
+ fn check_cmp_lt_direct() {
434
+ let a = (0..1024).into_par_iter();
435
+ let b = (1..1024).into_par_iter();
436
+
437
+ let result = a.cmp(b);
438
+
439
+ assert!(result == ::std::cmp::Ordering::Less);
440
+ }
441
+
442
+ #[test]
443
+ fn check_cmp_lt_to_seq() {
444
+ assert_eq!(
445
+ (0..1024).into_par_iter().cmp(1..1024),
446
+ (0..1024).cmp(1..1024)
447
+ )
448
+ }
449
+
450
+ #[test]
451
+ fn check_cmp_gt_direct() {
452
+ let a = (1..1024).into_par_iter();
453
+ let b = (0..1024).into_par_iter();
454
+
455
+ let result = a.cmp(b);
456
+
457
+ assert!(result == ::std::cmp::Ordering::Greater);
458
+ }
459
+
460
+ #[test]
461
+ fn check_cmp_gt_to_seq() {
462
+ assert_eq!(
463
+ (1..1024).into_par_iter().cmp(0..1024),
464
+ (1..1024).cmp(0..1024)
465
+ )
466
+ }
467
+
468
+ #[test]
469
+ #[cfg_attr(any(target_os = "emscripten", target_family = "wasm"), ignore)]
470
+ fn check_cmp_short_circuit() {
471
+ // We only use a single thread in order to make the short-circuit behavior deterministic.
472
+ let pool = ThreadPoolBuilder::new().num_threads(1).build().unwrap();
473
+
474
+ let a = vec![0; 1024];
475
+ let mut b = a.clone();
476
+ b[42] = 1;
477
+
478
+ pool.install(|| {
479
+ let expected = ::std::cmp::Ordering::Less;
480
+ assert_eq!(a.par_iter().cmp(&b), expected);
481
+
482
+ for len in 1..10 {
483
+ let counter = AtomicUsize::new(0);
484
+ let result = a
485
+ .par_iter()
486
+ .with_max_len(len)
487
+ .inspect(|_| {
488
+ counter.fetch_add(1, Ordering::SeqCst);
489
+ })
490
+ .cmp(&b);
491
+ assert_eq!(result, expected);
492
+ // should not have visited every single one
493
+ assert!(counter.into_inner() < a.len());
494
+ }
495
+ });
496
+ }
497
+
498
+ #[test]
499
+ #[cfg_attr(any(target_os = "emscripten", target_family = "wasm"), ignore)]
500
+ fn check_partial_cmp_short_circuit() {
501
+ // We only use a single thread to make the short-circuit behavior deterministic.
502
+ let pool = ThreadPoolBuilder::new().num_threads(1).build().unwrap();
503
+
504
+ let a = vec![0; 1024];
505
+ let mut b = a.clone();
506
+ b[42] = 1;
507
+
508
+ pool.install(|| {
509
+ let expected = Some(::std::cmp::Ordering::Less);
510
+ assert_eq!(a.par_iter().partial_cmp(&b), expected);
511
+
512
+ for len in 1..10 {
513
+ let counter = AtomicUsize::new(0);
514
+ let result = a
515
+ .par_iter()
516
+ .with_max_len(len)
517
+ .inspect(|_| {
518
+ counter.fetch_add(1, Ordering::SeqCst);
519
+ })
520
+ .partial_cmp(&b);
521
+ assert_eq!(result, expected);
522
+ // should not have visited every single one
523
+ assert!(counter.into_inner() < a.len());
524
+ }
525
+ });
526
+ }
527
+
528
+ #[test]
529
+ #[cfg_attr(any(target_os = "emscripten", target_family = "wasm"), ignore)]
530
+ fn check_partial_cmp_nan_short_circuit() {
531
+ // We only use a single thread to make the short-circuit behavior deterministic.
532
+ let pool = ThreadPoolBuilder::new().num_threads(1).build().unwrap();
533
+
534
+ let a = vec![0.0; 1024];
535
+ let mut b = a.clone();
536
+ b[42] = f64::NAN;
537
+
538
+ pool.install(|| {
539
+ let expected = None;
540
+ assert_eq!(a.par_iter().partial_cmp(&b), expected);
541
+
542
+ for len in 1..10 {
543
+ let counter = AtomicUsize::new(0);
544
+ let result = a
545
+ .par_iter()
546
+ .with_max_len(len)
547
+ .inspect(|_| {
548
+ counter.fetch_add(1, Ordering::SeqCst);
549
+ })
550
+ .partial_cmp(&b);
551
+ assert_eq!(result, expected);
552
+ // should not have visited every single one
553
+ assert!(counter.into_inner() < a.len());
554
+ }
555
+ });
556
+ }
557
+
558
+ #[test]
559
+ fn check_partial_cmp_direct() {
560
+ let a = (0..1024).into_par_iter();
561
+ let b = (0..1024).into_par_iter();
562
+
563
+ let result = a.partial_cmp(b);
564
+
565
+ assert!(result == Some(::std::cmp::Ordering::Equal));
566
+ }
567
+
568
+ #[test]
569
+ fn check_partial_cmp_to_seq() {
570
+ let par_result = (0..1024).into_par_iter().partial_cmp(0..1024);
571
+ let seq_result = (0..1024).partial_cmp(0..1024);
572
+ assert_eq!(par_result, seq_result);
573
+ }
574
+
575
+ #[test]
576
+ fn check_partial_cmp_rng_to_seq() {
577
+ let mut rng = seeded_rng();
578
+ let rng = &mut rng;
579
+ let a: Vec<i32> = rng.sample_iter(&StandardUniform).take(1024).collect();
580
+ let b: Vec<i32> = rng.sample_iter(&StandardUniform).take(1024).collect();
581
+ for i in 0..a.len() {
582
+ let par_result = a[i..].par_iter().partial_cmp(b[i..].par_iter());
583
+ let seq_result = a[i..].iter().partial_cmp(b[i..].iter());
584
+
585
+ assert_eq!(par_result, seq_result);
586
+ }
587
+ }
588
+
589
+ #[test]
590
+ fn check_partial_cmp_lt_direct() {
591
+ let a = (0..1024).into_par_iter();
592
+ let b = (1..1024).into_par_iter();
593
+
594
+ let result = a.partial_cmp(b);
595
+
596
+ assert!(result == Some(::std::cmp::Ordering::Less));
597
+ }
598
+
599
+ #[test]
600
+ fn check_partial_cmp_lt_to_seq() {
601
+ let par_result = (0..1024).into_par_iter().partial_cmp(1..1024);
602
+ let seq_result = (0..1024).partial_cmp(1..1024);
603
+ assert_eq!(par_result, seq_result);
604
+ }
605
+
606
+ #[test]
607
+ fn check_partial_cmp_gt_direct() {
608
+ let a = (1..1024).into_par_iter();
609
+ let b = (0..1024).into_par_iter();
610
+
611
+ let result = a.partial_cmp(b);
612
+
613
+ assert!(result == Some(::std::cmp::Ordering::Greater));
614
+ }
615
+
616
+ #[test]
617
+ fn check_partial_cmp_gt_to_seq() {
618
+ let par_result = (1..1024).into_par_iter().partial_cmp(0..1024);
619
+ let seq_result = (1..1024).partial_cmp(0..1024);
620
+ assert_eq!(par_result, seq_result);
621
+ }
622
+
623
+ #[test]
624
+ fn check_partial_cmp_none_direct() {
625
+ let a = vec![f64::NAN, 0.0];
626
+ let b = vec![0.0, 1.0];
627
+
628
+ let result = a.par_iter().partial_cmp(b.par_iter());
629
+
630
+ assert!(result.is_none());
631
+ }
632
+
633
+ #[test]
634
+ fn check_partial_cmp_none_to_seq() {
635
+ let a = vec![f64::NAN, 0.0];
636
+ let b = vec![0.0, 1.0];
637
+
638
+ let par_result = a.par_iter().partial_cmp(b.par_iter());
639
+ let seq_result = a.iter().partial_cmp(b.iter());
640
+
641
+ assert_eq!(par_result, seq_result);
642
+ }
643
+
644
+ #[test]
645
+ fn check_partial_cmp_late_nan_direct() {
646
+ let a = vec![0.0, f64::NAN];
647
+ let b = vec![1.0, 1.0];
648
+
649
+ let result = a.par_iter().partial_cmp(b.par_iter());
650
+
651
+ assert!(result == Some(::std::cmp::Ordering::Less));
652
+ }
653
+
654
+ #[test]
655
+ fn check_partial_cmp_late_nan_to_seq() {
656
+ let a = vec![0.0, f64::NAN];
657
+ let b = vec![1.0, 1.0];
658
+
659
+ let par_result = a.par_iter().partial_cmp(b.par_iter());
660
+ let seq_result = a.iter().partial_cmp(b.iter());
661
+
662
+ assert_eq!(par_result, seq_result);
663
+ }
664
+
665
+ #[test]
666
+ fn check_cmp_lengths() {
667
+ // comparisons should consider length if they are otherwise equal
668
+ let a = vec![0; 1024];
669
+ let b = vec![0; 1025];
670
+
671
+ assert_eq!(a.par_iter().cmp(&b), a.iter().cmp(&b));
672
+ assert_eq!(a.par_iter().partial_cmp(&b), a.iter().partial_cmp(&b));
673
+ }
674
+
675
+ #[test]
676
+ fn check_eq_direct() {
677
+ let a = (0..1024).into_par_iter();
678
+ let b = (0..1024).into_par_iter();
679
+
680
+ let result = a.eq(b);
681
+
682
+ assert!(result);
683
+ }
684
+
685
+ #[test]
686
+ fn check_eq_to_seq() {
687
+ let par_result = (0..1024).into_par_iter().eq((0..1024).into_par_iter());
688
+ let seq_result = (0..1024).eq(0..1024);
689
+
690
+ assert_eq!(par_result, seq_result);
691
+ }
692
+
693
+ #[test]
694
+ fn check_ne_direct() {
695
+ let a = (0..1024).into_par_iter();
696
+ let b = (1..1024).into_par_iter();
697
+
698
+ let result = a.ne(b);
699
+
700
+ assert!(result);
701
+ }
702
+
703
+ #[test]
704
+ fn check_ne_to_seq() {
705
+ let par_result = (0..1024).into_par_iter().ne((1..1025).into_par_iter());
706
+ let seq_result = (0..1024).ne(1..1025);
707
+
708
+ assert_eq!(par_result, seq_result);
709
+ }
710
+
711
+ #[test]
712
+ fn check_ne_lengths() {
713
+ // equality should consider length too
714
+ let a = vec![0; 1024];
715
+ let b = vec![0; 1025];
716
+
717
+ assert_eq!(a.par_iter().eq(&b), a.iter().eq(&b));
718
+ assert_eq!(a.par_iter().ne(&b), a.iter().ne(&b));
719
+ }
720
+
721
+ #[test]
722
+ fn check_lt_direct() {
723
+ assert!((0..1024).into_par_iter().lt(1..1024));
724
+ assert!(!(1..1024).into_par_iter().lt(0..1024));
725
+ }
726
+
727
+ #[test]
728
+ fn check_lt_to_seq() {
729
+ let par_result = (0..1024).into_par_iter().lt((1..1024).into_par_iter());
730
+ let seq_result = (0..1024).lt(1..1024);
731
+
732
+ assert_eq!(par_result, seq_result);
733
+ }
734
+
735
+ #[test]
736
+ fn check_le_equal_direct() {
737
+ assert!((0..1024).into_par_iter().le((0..1024).into_par_iter()));
738
+ }
739
+
740
+ #[test]
741
+ fn check_le_equal_to_seq() {
742
+ let par_result = (0..1024).into_par_iter().le((0..1024).into_par_iter());
743
+ let seq_result = (0..1024).le(0..1024);
744
+
745
+ assert_eq!(par_result, seq_result);
746
+ }
747
+
748
+ #[test]
749
+ fn check_le_less_direct() {
750
+ assert!((0..1024).into_par_iter().le((1..1024).into_par_iter()));
751
+ }
752
+
753
+ #[test]
754
+ fn check_le_less_to_seq() {
755
+ let par_result = (0..1024).into_par_iter().le((1..1024).into_par_iter());
756
+ let seq_result = (0..1024).le(1..1024);
757
+
758
+ assert_eq!(par_result, seq_result);
759
+ }
760
+
761
+ #[test]
762
+ fn check_gt_direct() {
763
+ assert!((1..1024).into_par_iter().gt((0..1024).into_par_iter()));
764
+ }
765
+
766
+ #[test]
767
+ fn check_gt_to_seq() {
768
+ let par_result = (1..1024).into_par_iter().gt((0..1024).into_par_iter());
769
+ let seq_result = (1..1024).gt(0..1024);
770
+
771
+ assert_eq!(par_result, seq_result);
772
+ }
773
+
774
+ #[test]
775
+ fn check_ge_equal_direct() {
776
+ assert!((0..1024).into_par_iter().ge((0..1024).into_par_iter()));
777
+ }
778
+
779
+ #[test]
780
+ fn check_ge_equal_to_seq() {
781
+ let par_result = (0..1024).into_par_iter().ge((0..1024).into_par_iter());
782
+ let seq_result = (0..1024).ge(0..1024);
783
+
784
+ assert_eq!(par_result, seq_result);
785
+ }
786
+
787
+ #[test]
788
+ fn check_ge_greater_direct() {
789
+ assert!((1..1024).into_par_iter().ge((0..1024).into_par_iter()));
790
+ }
791
+
792
+ #[test]
793
+ fn check_ge_greater_to_seq() {
794
+ let par_result = (1..1024).into_par_iter().ge((0..1024).into_par_iter());
795
+ let seq_result = (1..1024).ge(0..1024);
796
+
797
+ assert_eq!(par_result, seq_result);
798
+ }
799
+
800
+ #[test]
801
+ fn check_zip() {
802
+ let mut a: Vec<usize> = (0..1024).rev().collect();
803
+ let b: Vec<usize> = (0..1024).collect();
804
+
805
+ a.par_iter_mut().zip(&b[..]).for_each(|(a, &b)| *a += b);
806
+
807
+ assert!(a.iter().all(|&x| x == a.len() - 1));
808
+ }
809
+
810
+ #[test]
811
+ fn check_zip_into_par_iter() {
812
+ let mut a: Vec<usize> = (0..1024).rev().collect();
813
+ let b: Vec<usize> = (0..1024).collect();
814
+
815
+ a.par_iter_mut()
816
+ .zip(&b) // here we rely on &b iterating over &usize
817
+ .for_each(|(a, &b)| *a += b);
818
+
819
+ assert!(a.iter().all(|&x| x == a.len() - 1));
820
+ }
821
+
822
+ #[test]
823
+ fn check_zip_into_mut_par_iter() {
824
+ let a: Vec<usize> = (0..1024).rev().collect();
825
+ let mut b: Vec<usize> = (0..1024).collect();
826
+
827
+ a.par_iter().zip(&mut b).for_each(|(&a, b)| *b += a);
828
+
829
+ assert!(b.iter().all(|&x| x == b.len() - 1));
830
+ }
831
+
832
+ #[test]
833
+ fn check_zip_range() {
834
+ let mut a: Vec<usize> = (0..1024).rev().collect();
835
+
836
+ a.par_iter_mut()
837
+ .zip(0usize..1024)
838
+ .for_each(|(a, b)| *a += b);
839
+
840
+ assert!(a.iter().all(|&x| x == a.len() - 1));
841
+ }
842
+
843
+ #[test]
844
+ fn check_zip_eq() {
845
+ let mut a: Vec<usize> = (0..1024).rev().collect();
846
+ let b: Vec<usize> = (0..1024).collect();
847
+
848
+ a.par_iter_mut().zip_eq(&b[..]).for_each(|(a, &b)| *a += b);
849
+
850
+ assert!(a.iter().all(|&x| x == a.len() - 1));
851
+ }
852
+
853
+ #[test]
854
+ fn check_zip_eq_into_par_iter() {
855
+ let mut a: Vec<usize> = (0..1024).rev().collect();
856
+ let b: Vec<usize> = (0..1024).collect();
857
+
858
+ a.par_iter_mut()
859
+ .zip_eq(&b) // here we rely on &b iterating over &usize
860
+ .for_each(|(a, &b)| *a += b);
861
+
862
+ assert!(a.iter().all(|&x| x == a.len() - 1));
863
+ }
864
+
865
+ #[test]
866
+ fn check_zip_eq_into_mut_par_iter() {
867
+ let a: Vec<usize> = (0..1024).rev().collect();
868
+ let mut b: Vec<usize> = (0..1024).collect();
869
+
870
+ a.par_iter().zip_eq(&mut b).for_each(|(&a, b)| *b += a);
871
+
872
+ assert!(b.iter().all(|&x| x == b.len() - 1));
873
+ }
874
+
875
+ #[test]
876
+ fn check_zip_eq_range() {
877
+ let mut a: Vec<usize> = (0..1024).rev().collect();
878
+
879
+ a.par_iter_mut()
880
+ .zip_eq(0usize..1024)
881
+ .for_each(|(a, b)| *a += b);
882
+
883
+ assert!(a.iter().all(|&x| x == a.len() - 1));
884
+ }
885
+
886
+ #[test]
887
+ fn check_sum_filtered_ints() {
888
+ let a: Vec<i32> = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
889
+ let par_sum_evens: i32 = a.par_iter().filter(|&x| (x & 1) == 0).sum();
890
+ let seq_sum_evens = a.iter().filter(|&x| (x & 1) == 0).sum();
891
+ assert_eq!(par_sum_evens, seq_sum_evens);
892
+ }
893
+
894
+ #[test]
895
+ fn check_sum_filtermap_ints() {
896
+ let a: Vec<i32> = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
897
+ let par_sum_evens: u32 = a
898
+ .par_iter()
899
+ .filter_map(|&x| if (x & 1) == 0 { Some(x as u32) } else { None })
900
+ .sum();
901
+ let seq_sum_evens = a
902
+ .iter()
903
+ .filter_map(|&x| if (x & 1) == 0 { Some(x as u32) } else { None })
904
+ .sum();
905
+ assert_eq!(par_sum_evens, seq_sum_evens);
906
+ }
907
+
908
+ #[test]
909
+ fn check_flat_map_nested_ranges() {
910
+ // FIXME -- why are precise type hints required on the integers here?
911
+
912
+ let v: i32 = (0_i32..10)
913
+ .into_par_iter()
914
+ .flat_map(|i| (0_i32..10).into_par_iter().map(move |j| (i, j)))
915
+ .map(|(i, j)| i * j)
916
+ .sum();
917
+
918
+ let w = (0_i32..10)
919
+ .flat_map(|i| (0_i32..10).map(move |j| (i, j)))
920
+ .map(|(i, j)| i * j)
921
+ .sum();
922
+
923
+ assert_eq!(v, w);
924
+ }
925
+
926
+ #[test]
927
+ fn check_empty_flat_map_sum() {
928
+ let a: Vec<i32> = (0..1024).collect();
929
+ let empty = &a[..0];
930
+
931
+ // empty on the inside
932
+ let b: i32 = a.par_iter().flat_map(|_| empty).sum();
933
+ assert_eq!(b, 0);
934
+
935
+ // empty on the outside
936
+ let c: i32 = empty.par_iter().flat_map(|_| a.par_iter()).sum();
937
+ assert_eq!(c, 0);
938
+ }
939
+
940
+ #[test]
941
+ fn check_flatten_vec() {
942
+ let a: Vec<i32> = (0..1024).collect();
943
+ let b: Vec<Vec<i32>> = vec![a.clone(), a.clone(), a.clone(), a.clone()];
944
+ let c: Vec<i32> = b.par_iter().flatten().cloned().collect();
945
+ let mut d = a.clone();
946
+ d.extend(&a);
947
+ d.extend(&a);
948
+ d.extend(&a);
949
+
950
+ assert_eq!(d, c);
951
+ }
952
+
953
+ #[test]
954
+ fn check_flatten_vec_empty() {
955
+ let a: Vec<Vec<i32>> = vec![vec![]];
956
+ let b: Vec<i32> = a.par_iter().flatten().cloned().collect();
957
+
958
+ assert_eq!(vec![] as Vec<i32>, b);
959
+ }
960
+
961
+ #[test]
962
+ fn check_slice_split() {
963
+ let v: Vec<_> = (0..1000).collect();
964
+ for m in 1..100 {
965
+ let a: Vec<_> = v.split(|x| x % m == 0).collect();
966
+ let b: Vec<_> = v.par_split(|x| x % m == 0).collect();
967
+ assert_eq!(a, b);
968
+ }
969
+
970
+ // same as std::slice::split() examples
971
+ let slice = [10, 40, 33, 20];
972
+ let v: Vec<_> = slice.par_split(|num| num % 3 == 0).collect();
973
+ assert_eq!(v, &[&slice[..2], &slice[3..]]);
974
+
975
+ let slice = [10, 40, 33];
976
+ let v: Vec<_> = slice.par_split(|num| num % 3 == 0).collect();
977
+ assert_eq!(v, &[&slice[..2], &slice[..0]]);
978
+
979
+ let slice = [10, 6, 33, 20];
980
+ let v: Vec<_> = slice.par_split(|num| num % 3 == 0).collect();
981
+ assert_eq!(v, &[&slice[..1], &slice[..0], &slice[3..]]);
982
+ }
983
+
984
+ #[test]
985
+ fn check_slice_split_inclusive() {
986
+ let v: Vec<_> = (0..1000).collect();
987
+ for m in 1..100 {
988
+ let a: Vec<_> = v.split_inclusive(|x| x % m == 0).collect();
989
+ let b: Vec<_> = v.par_split_inclusive(|x| x % m == 0).collect();
990
+ assert_eq!(a, b);
991
+ }
992
+
993
+ // same as std::slice::split_inclusive() examples
994
+ let slice = [10, 40, 33, 20];
995
+ let v: Vec<_> = slice.par_split_inclusive(|num| num % 3 == 0).collect();
996
+ assert_eq!(v, &[&slice[..3], &slice[3..]]);
997
+
998
+ let slice = [3, 10, 40, 33];
999
+ let v: Vec<_> = slice.par_split_inclusive(|num| num % 3 == 0).collect();
1000
+ assert_eq!(v, &[&slice[..1], &slice[1..]]);
1001
+ }
1002
+
1003
+ #[test]
1004
+ fn check_slice_split_mut() {
1005
+ let mut v1: Vec<_> = (0..1000).collect();
1006
+ let mut v2 = v1.clone();
1007
+ for m in 1..100 {
1008
+ let a: Vec<_> = v1.split_mut(|x| x % m == 0).collect();
1009
+ let b: Vec<_> = v2.par_split_mut(|x| x % m == 0).collect();
1010
+ assert_eq!(a, b);
1011
+ }
1012
+
1013
+ // same as std::slice::split_mut() example
1014
+ let mut v = [10, 40, 30, 20, 60, 50];
1015
+ v.par_split_mut(|num| num % 3 == 0).for_each(|group| {
1016
+ group[0] = 1;
1017
+ });
1018
+ assert_eq!(v, [1, 40, 30, 1, 60, 1]);
1019
+ }
1020
+
1021
+ #[test]
1022
+ fn check_slice_split_inclusive_mut() {
1023
+ let mut v1: Vec<_> = (0..1000).collect();
1024
+ let mut v2 = v1.clone();
1025
+ for m in 1..100 {
1026
+ let a: Vec<_> = v1.split_inclusive_mut(|x| x % m == 0).collect();
1027
+ let b: Vec<_> = v2.par_split_inclusive_mut(|x| x % m == 0).collect();
1028
+ assert_eq!(a, b);
1029
+ }
1030
+
1031
+ // same as std::slice::split_inclusive_mut() example
1032
+ let mut v = [10, 40, 30, 20, 60, 50];
1033
+ v.par_split_inclusive_mut(|num| num % 3 == 0)
1034
+ .for_each(|group| {
1035
+ let terminator_idx = group.len() - 1;
1036
+ group[terminator_idx] = 1;
1037
+ });
1038
+ assert_eq!(v, [10, 40, 1, 20, 1, 1]);
1039
+ }
1040
+
1041
+ #[test]
1042
+ fn check_chunks() {
1043
+ let a: Vec<i32> = vec![1, 5, 10, 4, 100, 3, 1000, 2, 10000, 1];
1044
+ let par_sum_product_pairs: i32 = a.par_chunks(2).map(|c| c.iter().product::<i32>()).sum();
1045
+ let seq_sum_product_pairs = a.chunks(2).map(|c| c.iter().product::<i32>()).sum();
1046
+ assert_eq!(par_sum_product_pairs, 12345);
1047
+ assert_eq!(par_sum_product_pairs, seq_sum_product_pairs);
1048
+
1049
+ let par_sum_product_triples: i32 = a.par_chunks(3).map(|c| c.iter().product::<i32>()).sum();
1050
+ let seq_sum_product_triples = a.chunks(3).map(|c| c.iter().product::<i32>()).sum();
1051
+ assert_eq!(par_sum_product_triples, 5_0 + 12_00 + 20_000_000 + 1);
1052
+ assert_eq!(par_sum_product_triples, seq_sum_product_triples);
1053
+ }
1054
+
1055
+ #[test]
1056
+ fn check_chunks_mut() {
1057
+ let mut a: Vec<i32> = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
1058
+ let mut b: Vec<i32> = a.clone();
1059
+ a.par_chunks_mut(2).for_each(|c| c[0] = c.iter().sum());
1060
+ b.chunks_mut(2).for_each(|c| c[0] = c.iter().sum());
1061
+ assert_eq!(a, &[3, 2, 7, 4, 11, 6, 15, 8, 19, 10]);
1062
+ assert_eq!(a, b);
1063
+
1064
+ let mut a: Vec<i32> = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
1065
+ let mut b: Vec<i32> = a.clone();
1066
+ a.par_chunks_mut(3).for_each(|c| c[0] = c.iter().sum());
1067
+ b.chunks_mut(3).for_each(|c| c[0] = c.iter().sum());
1068
+ assert_eq!(a, &[6, 2, 3, 15, 5, 6, 24, 8, 9, 10]);
1069
+ assert_eq!(a, b);
1070
+ }
1071
+
1072
+ #[test]
1073
+ fn check_windows() {
1074
+ let a: Vec<i32> = (0..1024).collect();
1075
+ let par: Vec<_> = a.par_windows(2).collect();
1076
+ let seq: Vec<_> = a.windows(2).collect();
1077
+ assert_eq!(par, seq);
1078
+
1079
+ let par: Vec<_> = a.par_windows(100).collect();
1080
+ let seq: Vec<_> = a.windows(100).collect();
1081
+ assert_eq!(par, seq);
1082
+
1083
+ let par: Vec<_> = a.par_windows(1_000_000).collect();
1084
+ let seq: Vec<_> = a.windows(1_000_000).collect();
1085
+ assert_eq!(par, seq);
1086
+
1087
+ let par: Vec<_> = a
1088
+ .par_windows(2)
1089
+ .chain(a.par_windows(1_000_000))
1090
+ .zip(a.par_windows(2))
1091
+ .collect();
1092
+ let seq: Vec<_> = a
1093
+ .windows(2)
1094
+ .chain(a.windows(1_000_000))
1095
+ .zip(a.windows(2))
1096
+ .collect();
1097
+ assert_eq!(par, seq);
1098
+ }
1099
+
1100
+ #[test]
1101
+ fn check_options() {
1102
+ let mut a = vec![None, Some(1), None, None, Some(2), Some(4)];
1103
+
1104
+ assert_eq!(7, a.par_iter().flat_map(|opt| opt).sum::<i32>());
1105
+ assert_eq!(7, a.par_iter().flat_map(|opt| opt).sum::<i32>());
1106
+
1107
+ a.par_iter_mut()
1108
+ .flat_map(|opt| opt)
1109
+ .for_each(|x| *x = *x * *x);
1110
+
1111
+ assert_eq!(21, a.into_par_iter().flat_map(|opt| opt).sum::<i32>());
1112
+ }
1113
+
1114
+ #[test]
1115
+ fn check_results() {
1116
+ let mut a = vec![Err(()), Ok(1i32), Err(()), Err(()), Ok(2), Ok(4)];
1117
+
1118
+ assert_eq!(7, a.par_iter().flat_map(|res| res).sum::<i32>());
1119
+
1120
+ assert_eq!(Err::<i32, ()>(()), a.par_iter().cloned().sum());
1121
+ assert_eq!(Ok(7), a.par_iter().cloned().filter(Result::is_ok).sum());
1122
+
1123
+ assert_eq!(Err::<i32, ()>(()), a.par_iter().cloned().product());
1124
+ assert_eq!(Ok(8), a.par_iter().cloned().filter(Result::is_ok).product());
1125
+
1126
+ a.par_iter_mut()
1127
+ .flat_map(|res| res)
1128
+ .for_each(|x| *x = *x * *x);
1129
+
1130
+ assert_eq!(21, a.into_par_iter().flat_map(|res| res).sum::<i32>());
1131
+ }
1132
+
1133
+ #[test]
1134
+ fn check_binary_heap() {
1135
+ use std::collections::BinaryHeap;
1136
+
1137
+ let a: BinaryHeap<i32> = (0..10).collect();
1138
+
1139
+ assert_eq!(45, a.par_iter().sum::<i32>());
1140
+ assert_eq!(45, a.into_par_iter().sum::<i32>());
1141
+ }
1142
+
1143
+ #[test]
1144
+ fn check_btree_map() {
1145
+ use std::collections::BTreeMap;
1146
+
1147
+ let mut a: BTreeMap<i32, i32> = (0..10).map(|i| (i, -i)).collect();
1148
+
1149
+ assert_eq!(45, a.par_iter().map(|(&k, _)| k).sum::<i32>());
1150
+ assert_eq!(-45, a.par_iter().map(|(_, &v)| v).sum::<i32>());
1151
+
1152
+ a.par_iter_mut().for_each(|(k, v)| *v += *k);
1153
+
1154
+ assert_eq!(0, a.into_par_iter().map(|(_, v)| v).sum::<i32>());
1155
+ }
1156
+
1157
+ #[test]
1158
+ fn check_btree_set() {
1159
+ use std::collections::BTreeSet;
1160
+
1161
+ let a: BTreeSet<i32> = (0..10).collect();
1162
+
1163
+ assert_eq!(45, a.par_iter().sum::<i32>());
1164
+ assert_eq!(45, a.into_par_iter().sum::<i32>());
1165
+ }
1166
+
1167
+ #[test]
1168
+ fn check_hash_map() {
1169
+ use std::collections::HashMap;
1170
+
1171
+ let mut a: HashMap<i32, i32> = (0..10).map(|i| (i, -i)).collect();
1172
+
1173
+ assert_eq!(45, a.par_iter().map(|(&k, _)| k).sum::<i32>());
1174
+ assert_eq!(-45, a.par_iter().map(|(_, &v)| v).sum::<i32>());
1175
+
1176
+ a.par_iter_mut().for_each(|(k, v)| *v += *k);
1177
+
1178
+ assert_eq!(0, a.into_par_iter().map(|(_, v)| v).sum::<i32>());
1179
+ }
1180
+
1181
+ #[test]
1182
+ fn check_hash_set() {
1183
+ use std::collections::HashSet;
1184
+
1185
+ let a: HashSet<i32> = (0..10).collect();
1186
+
1187
+ assert_eq!(45, a.par_iter().sum::<i32>());
1188
+ assert_eq!(45, a.into_par_iter().sum::<i32>());
1189
+ }
1190
+
1191
+ #[test]
1192
+ fn check_linked_list() {
1193
+ use std::collections::LinkedList;
1194
+
1195
+ let mut a: LinkedList<i32> = (0..10).collect();
1196
+
1197
+ assert_eq!(45, a.par_iter().sum::<i32>());
1198
+
1199
+ a.par_iter_mut().for_each(|x| *x = -*x);
1200
+
1201
+ assert_eq!(-45, a.into_par_iter().sum::<i32>());
1202
+ }
1203
+
1204
+ #[test]
1205
+ fn check_vec_deque() {
1206
+ use std::collections::VecDeque;
1207
+
1208
+ let mut a: VecDeque<i32> = (0..10).collect();
1209
+
1210
+ // try to get it to wrap around
1211
+ a.drain(..5);
1212
+ a.extend(0..5);
1213
+
1214
+ assert_eq!(45, a.par_iter().sum::<i32>());
1215
+
1216
+ a.par_iter_mut().for_each(|x| *x = -*x);
1217
+
1218
+ assert_eq!(-45, a.into_par_iter().sum::<i32>());
1219
+ }
1220
+
1221
+ #[test]
1222
+ fn check_chain() {
1223
+ let mut res = vec![];
1224
+
1225
+ // stays indexed in the face of madness
1226
+ Some(0)
1227
+ .into_par_iter()
1228
+ .chain(Ok::<_, ()>(1))
1229
+ .chain(1..4)
1230
+ .chain(Err("huh?"))
1231
+ .chain(None)
1232
+ .chain(vec![5, 8, 13])
1233
+ .map(|x| (x as u8 + b'a') as char)
1234
+ .chain(vec!['x', 'y', 'z'])
1235
+ .zip((0i32..1000).into_par_iter().map(|x| -x))
1236
+ .enumerate()
1237
+ .map(|(a, (b, c))| (a, b, c))
1238
+ .chain(None)
1239
+ .collect_into_vec(&mut res);
1240
+
1241
+ assert_eq!(
1242
+ res,
1243
+ vec![
1244
+ (0, 'a', 0),
1245
+ (1, 'b', -1),
1246
+ (2, 'b', -2),
1247
+ (3, 'c', -3),
1248
+ (4, 'd', -4),
1249
+ (5, 'f', -5),
1250
+ (6, 'i', -6),
1251
+ (7, 'n', -7),
1252
+ (8, 'x', -8),
1253
+ (9, 'y', -9),
1254
+ (10, 'z', -10)
1255
+ ]
1256
+ );
1257
+
1258
+ // unindexed is ok too
1259
+ let res: Vec<i32> = Some(1i32)
1260
+ .into_par_iter()
1261
+ .chain(
1262
+ (2i32..4)
1263
+ .into_par_iter()
1264
+ .chain(vec![5, 6, 7, 8, 9])
1265
+ .chain(Some((10, 100)).into_par_iter().flat_map(|(a, b)| a..b))
1266
+ .filter(|x| x & 1 == 1),
1267
+ )
1268
+ .collect();
1269
+ let other: Vec<i32> = (0..100).filter(|x| x & 1 == 1).collect();
1270
+ assert_eq!(res, other);
1271
+
1272
+ // chain collect is ok with the "fake" specialization
1273
+ let res: Vec<i32> = Some(1i32).into_par_iter().chain(None).collect();
1274
+ assert_eq!(res, &[1]);
1275
+ }
1276
+
1277
+ #[test]
1278
+ fn check_count() {
1279
+ let c0 = (0_u32..24 * 1024).filter(|i| i % 2 == 0).count();
1280
+ let c1 = (0_u32..24 * 1024)
1281
+ .into_par_iter()
1282
+ .filter(|i| i % 2 == 0)
1283
+ .count();
1284
+ assert_eq!(c0, c1);
1285
+ }
1286
+
1287
+ #[test]
1288
+ fn find_any() {
1289
+ let a: Vec<i32> = (0..1024).collect();
1290
+
1291
+ assert!(a.par_iter().find_any(|&&x| x % 42 == 41).is_some());
1292
+ assert_eq!(
1293
+ a.par_iter().find_any(|&&x| x % 19 == 1 && x % 53 == 0),
1294
+ Some(&742_i32)
1295
+ );
1296
+ assert_eq!(a.par_iter().find_any(|&&x| x < 0), None);
1297
+
1298
+ assert!(a.par_iter().position_any(|&x| x % 42 == 41).is_some());
1299
+ assert_eq!(
1300
+ a.par_iter().position_any(|&x| x % 19 == 1 && x % 53 == 0),
1301
+ Some(742_usize)
1302
+ );
1303
+ assert_eq!(a.par_iter().position_any(|&x| x < 0), None);
1304
+
1305
+ assert!(a.par_iter().any(|&x| x > 1000));
1306
+ assert!(!a.par_iter().any(|&x| x < 0));
1307
+
1308
+ assert!(!a.par_iter().all(|&x| x > 1000));
1309
+ assert!(a.par_iter().all(|&x| x >= 0));
1310
+ }
1311
+
1312
+ #[test]
1313
+ fn find_first_or_last() {
1314
+ let a: Vec<i32> = (0..1024).collect();
1315
+
1316
+ assert_eq!(a.par_iter().find_first(|&&x| x % 42 == 41), Some(&41_i32));
1317
+ assert_eq!(
1318
+ a.par_iter().find_first(|&&x| x % 19 == 1 && x % 53 == 0),
1319
+ Some(&742_i32)
1320
+ );
1321
+ assert_eq!(a.par_iter().find_first(|&&x| x < 0), None);
1322
+
1323
+ assert_eq!(
1324
+ a.par_iter().position_first(|&x| x % 42 == 41),
1325
+ Some(41_usize)
1326
+ );
1327
+ assert_eq!(
1328
+ a.par_iter().position_first(|&x| x % 19 == 1 && x % 53 == 0),
1329
+ Some(742_usize)
1330
+ );
1331
+ assert_eq!(a.par_iter().position_first(|&x| x < 0), None);
1332
+
1333
+ assert_eq!(a.par_iter().find_last(|&&x| x % 42 == 41), Some(&1007_i32));
1334
+ assert_eq!(
1335
+ a.par_iter().find_last(|&&x| x % 19 == 1 && x % 53 == 0),
1336
+ Some(&742_i32)
1337
+ );
1338
+ assert_eq!(a.par_iter().find_last(|&&x| x < 0), None);
1339
+
1340
+ assert_eq!(
1341
+ a.par_iter().position_last(|&x| x % 42 == 41),
1342
+ Some(1007_usize)
1343
+ );
1344
+ assert_eq!(
1345
+ a.par_iter().position_last(|&x| x % 19 == 1 && x % 53 == 0),
1346
+ Some(742_usize)
1347
+ );
1348
+ assert_eq!(a.par_iter().position_last(|&x| x < 0), None);
1349
+ }
1350
+
1351
+ #[test]
1352
+ fn find_map_first_or_last_or_any() {
1353
+ let mut a: Vec<i32> = vec![];
1354
+
1355
+ assert!(a.par_iter().find_map_any(half_if_positive).is_none());
1356
+ assert!(a.par_iter().find_map_first(half_if_positive).is_none());
1357
+ assert!(a.par_iter().find_map_last(half_if_positive).is_none());
1358
+
1359
+ a = (-1024..-3).collect();
1360
+
1361
+ assert!(a.par_iter().find_map_any(half_if_positive).is_none());
1362
+ assert!(a.par_iter().find_map_first(half_if_positive).is_none());
1363
+ assert!(a.par_iter().find_map_last(half_if_positive).is_none());
1364
+
1365
+ assert!(a.par_iter().find_map_any(half_if_negative).is_some());
1366
+ assert_eq!(
1367
+ a.par_iter().find_map_first(half_if_negative),
1368
+ Some(-512_i32)
1369
+ );
1370
+ assert_eq!(a.par_iter().find_map_last(half_if_negative), Some(-2_i32));
1371
+
1372
+ a.append(&mut (2..1025).collect());
1373
+
1374
+ assert!(a.par_iter().find_map_any(half_if_positive).is_some());
1375
+ assert_eq!(a.par_iter().find_map_first(half_if_positive), Some(1_i32));
1376
+ assert_eq!(a.par_iter().find_map_last(half_if_positive), Some(512_i32));
1377
+
1378
+ fn half_if_positive(x: &i32) -> Option<i32> {
1379
+ if *x > 0 {
1380
+ Some(x / 2)
1381
+ } else {
1382
+ None
1383
+ }
1384
+ }
1385
+
1386
+ fn half_if_negative(x: &i32) -> Option<i32> {
1387
+ if *x < 0 {
1388
+ Some(x / 2)
1389
+ } else {
1390
+ None
1391
+ }
1392
+ }
1393
+ }
1394
+
1395
+ #[test]
1396
+ fn check_find_not_present() {
1397
+ let counter = AtomicUsize::new(0);
1398
+ let value: Option<i32> = (0_i32..2048).into_par_iter().find_any(|&p| {
1399
+ counter.fetch_add(1, Ordering::SeqCst);
1400
+ p >= 2048
1401
+ });
1402
+ assert!(value.is_none());
1403
+ assert!(counter.load(Ordering::SeqCst) == 2048); // should have visited every single one
1404
+ }
1405
+
1406
+ #[test]
1407
+ fn check_find_is_present() {
1408
+ let counter = AtomicUsize::new(0);
1409
+ let value: Option<i32> = (0_i32..2048).into_par_iter().find_any(|&p| {
1410
+ counter.fetch_add(1, Ordering::SeqCst);
1411
+ (1024..1096).contains(&p)
1412
+ });
1413
+ let q = value.unwrap();
1414
+ assert!((1024..1096).contains(&q));
1415
+ assert!(counter.load(Ordering::SeqCst) < 2048); // should not have visited every single one
1416
+ }
1417
+
1418
+ #[test]
1419
+ fn check_while_some() {
1420
+ let value = (0_i32..2048).into_par_iter().map(Some).while_some().max();
1421
+ assert_eq!(value, Some(2047));
1422
+
1423
+ let counter = AtomicUsize::new(0);
1424
+ let value = (0_i32..2048)
1425
+ .into_par_iter()
1426
+ .map(|x| {
1427
+ counter.fetch_add(1, Ordering::SeqCst);
1428
+ if x < 1024 {
1429
+ Some(x)
1430
+ } else {
1431
+ None
1432
+ }
1433
+ })
1434
+ .while_some()
1435
+ .max();
1436
+ assert!(value < Some(1024));
1437
+ assert!(counter.load(Ordering::SeqCst) < 2048); // should not have visited every single one
1438
+ }
1439
+
1440
+ #[test]
1441
+ fn par_iter_collect_option() {
1442
+ let a: Option<Vec<_>> = (0_i32..2048).map(Some).collect();
1443
+ let b: Option<Vec<_>> = (0_i32..2048).into_par_iter().map(Some).collect();
1444
+ assert_eq!(a, b);
1445
+
1446
+ let c: Option<Vec<_>> = (0_i32..2048)
1447
+ .into_par_iter()
1448
+ .map(|x| if x == 1234 { None } else { Some(x) })
1449
+ .collect();
1450
+ assert_eq!(c, None);
1451
+ }
1452
+
1453
+ #[test]
1454
+ fn par_iter_collect_result() {
1455
+ let a: Result<Vec<_>, ()> = (0_i32..2048).map(Ok).collect();
1456
+ let b: Result<Vec<_>, ()> = (0_i32..2048).into_par_iter().map(Ok).collect();
1457
+ assert_eq!(a, b);
1458
+
1459
+ let c: Result<Vec<_>, _> = (0_i32..2048)
1460
+ .into_par_iter()
1461
+ .map(|x| if x == 1234 { Err(x) } else { Ok(x) })
1462
+ .collect();
1463
+ assert_eq!(c, Err(1234));
1464
+
1465
+ let d: Result<Vec<_>, _> = (0_i32..2048)
1466
+ .into_par_iter()
1467
+ .map(|x| if x % 100 == 99 { Err(x) } else { Ok(x) })
1468
+ .collect();
1469
+ assert_eq!(d.map_err(|x| x % 100), Err(99));
1470
+ }
1471
+
1472
+ #[test]
1473
+ fn par_iter_collect() {
1474
+ let a: Vec<i32> = (0..1024).collect();
1475
+ let b: Vec<i32> = a.par_iter().map(|&i| i + 1).collect();
1476
+ let c: Vec<i32> = (0..1024).map(|i| i + 1).collect();
1477
+ assert_eq!(b, c);
1478
+ }
1479
+
1480
+ #[test]
1481
+ fn par_iter_collect_vecdeque() {
1482
+ let a: Vec<i32> = (0..1024).collect();
1483
+ let b: VecDeque<i32> = a.par_iter().cloned().collect();
1484
+ let c: VecDeque<i32> = a.iter().cloned().collect();
1485
+ assert_eq!(b, c);
1486
+ }
1487
+
1488
+ #[test]
1489
+ fn par_iter_collect_binaryheap() {
1490
+ let a: Vec<i32> = (0..1024).collect();
1491
+ let mut b: BinaryHeap<i32> = a.par_iter().cloned().collect();
1492
+ assert_eq!(b.peek(), Some(&1023));
1493
+ assert_eq!(b.len(), 1024);
1494
+ for n in (0..1024).rev() {
1495
+ assert_eq!(b.pop(), Some(n));
1496
+ assert_eq!(b.len() as i32, n);
1497
+ }
1498
+ }
1499
+
1500
+ #[test]
1501
+ fn par_iter_collect_hashmap() {
1502
+ let a: Vec<i32> = (0..1024).collect();
1503
+ let b: HashMap<i32, String> = a.par_iter().map(|&i| (i, format!("{i}"))).collect();
1504
+ assert_eq!(&b[&3], "3");
1505
+ assert_eq!(b.len(), 1024);
1506
+ }
1507
+
1508
+ #[test]
1509
+ fn par_iter_collect_hashset() {
1510
+ let a: Vec<i32> = (0..1024).collect();
1511
+ let b: HashSet<i32> = a.par_iter().cloned().collect();
1512
+ assert_eq!(b.len(), 1024);
1513
+ }
1514
+
1515
+ #[test]
1516
+ fn par_iter_collect_btreemap() {
1517
+ let a: Vec<i32> = (0..1024).collect();
1518
+ let b: BTreeMap<i32, String> = a.par_iter().map(|&i| (i, format!("{i}"))).collect();
1519
+ assert_eq!(&b[&3], "3");
1520
+ assert_eq!(b.len(), 1024);
1521
+ }
1522
+
1523
+ #[test]
1524
+ fn par_iter_collect_btreeset() {
1525
+ let a: Vec<i32> = (0..1024).collect();
1526
+ let b: BTreeSet<i32> = a.par_iter().cloned().collect();
1527
+ assert_eq!(b.len(), 1024);
1528
+ }
1529
+
1530
+ #[test]
1531
+ fn par_iter_collect_linked_list() {
1532
+ let a: Vec<i32> = (0..1024).collect();
1533
+ let b: LinkedList<_> = a.par_iter().map(|&i| (i, format!("{i}"))).collect();
1534
+ let c: LinkedList<_> = a.iter().map(|&i| (i, format!("{i}"))).collect();
1535
+ assert_eq!(b, c);
1536
+ }
1537
+
1538
+ #[test]
1539
+ fn par_iter_collect_linked_list_flat_map_filter() {
1540
+ let b: LinkedList<i32> = (0_i32..1024)
1541
+ .into_par_iter()
1542
+ .flat_map(|i| 0..i)
1543
+ .filter(|&i| i % 2 == 0)
1544
+ .collect();
1545
+ let c: LinkedList<i32> = (0_i32..1024)
1546
+ .flat_map(|i| 0..i)
1547
+ .filter(|&i| i % 2 == 0)
1548
+ .collect();
1549
+ assert_eq!(b, c);
1550
+ }
1551
+
1552
+ #[test]
1553
+ fn par_iter_collect_cows() {
1554
+ use std::borrow::Cow;
1555
+
1556
+ let s = "Fearless Concurrency with Rust";
1557
+
1558
+ // Collects `i32` into a `Vec`
1559
+ let a: Cow<'_, [i32]> = (0..1024).collect();
1560
+ let b: Cow<'_, [i32]> = a.par_iter().cloned().collect();
1561
+ assert_eq!(a, b);
1562
+
1563
+ // Collects `char` into a `String`
1564
+ let a: Cow<'_, str> = s.chars().collect();
1565
+ let b: Cow<'_, str> = s.par_chars().collect();
1566
+ assert_eq!(a, b);
1567
+
1568
+ // Collects `str` into a `String`
1569
+ let sw = s.split_whitespace();
1570
+ let psw = s.par_split_whitespace();
1571
+ let a: Cow<'_, str> = sw.clone().collect();
1572
+ let b: Cow<'_, str> = psw.clone().collect();
1573
+ assert_eq!(a, b);
1574
+
1575
+ // Collects `String` into a `String`
1576
+ let a: Cow<'_, str> = sw.map(str::to_owned).collect();
1577
+ let b: Cow<'_, str> = psw.map(str::to_owned).collect();
1578
+ assert_eq!(a, b);
1579
+
1580
+ // Collects `OsStr` into a `OsString`
1581
+ let sw = s.split_whitespace().map(OsStr::new);
1582
+ let psw = s.par_split_whitespace().map(OsStr::new);
1583
+ let a: Cow<'_, OsStr> = Cow::Owned(sw.clone().collect());
1584
+ let b: Cow<'_, OsStr> = psw.clone().collect();
1585
+ assert_eq!(a, b);
1586
+
1587
+ // Collects `OsString` into a `OsString`
1588
+ let a: Cow<'_, OsStr> = Cow::Owned(sw.map(OsStr::to_owned).collect());
1589
+ let b: Cow<'_, OsStr> = psw.map(OsStr::to_owned).collect();
1590
+ assert_eq!(a, b);
1591
+ }
1592
+
1593
+ #[test]
1594
+ fn par_iter_unindexed_flat_map() {
1595
+ let b: Vec<i64> = (0_i64..1024).into_par_iter().flat_map(Some).collect();
1596
+ let c: Vec<i64> = (0_i64..1024).flat_map(Some).collect();
1597
+ assert_eq!(b, c);
1598
+ }
1599
+
1600
+ #[test]
1601
+ fn min_max() {
1602
+ let rng = seeded_rng();
1603
+ let a: Vec<i32> = rng.sample_iter(&StandardUniform).take(1024).collect();
1604
+ for i in 0..=a.len() {
1605
+ let slice = &a[..i];
1606
+ assert_eq!(slice.par_iter().min(), slice.iter().min());
1607
+ assert_eq!(slice.par_iter().max(), slice.iter().max());
1608
+ }
1609
+ }
1610
+
1611
+ #[test]
1612
+ fn min_max_by() {
1613
+ let rng = seeded_rng();
1614
+ // Make sure there are duplicate keys, for testing sort stability
1615
+ let r: Vec<i32> = rng.sample_iter(&StandardUniform).take(512).collect();
1616
+ let a: Vec<(i32, u16)> = r.iter().chain(&r).cloned().zip(0..).collect();
1617
+ for i in 0..=a.len() {
1618
+ let slice = &a[..i];
1619
+ assert_eq!(
1620
+ slice.par_iter().min_by(|x, y| x.0.cmp(&y.0)),
1621
+ slice.iter().min_by(|x, y| x.0.cmp(&y.0))
1622
+ );
1623
+ assert_eq!(
1624
+ slice.par_iter().max_by(|x, y| x.0.cmp(&y.0)),
1625
+ slice.iter().max_by(|x, y| x.0.cmp(&y.0))
1626
+ );
1627
+ }
1628
+ }
1629
+
1630
+ #[test]
1631
+ fn min_max_by_key() {
1632
+ let rng = seeded_rng();
1633
+ // Make sure there are duplicate keys, for testing sort stability
1634
+ let r: Vec<i32> = rng.sample_iter(&StandardUniform).take(512).collect();
1635
+ let a: Vec<(i32, u16)> = r.iter().chain(&r).cloned().zip(0..).collect();
1636
+ for i in 0..=a.len() {
1637
+ let slice = &a[..i];
1638
+ assert_eq!(
1639
+ slice.par_iter().min_by_key(|x| x.0),
1640
+ slice.iter().min_by_key(|x| x.0)
1641
+ );
1642
+ assert_eq!(
1643
+ slice.par_iter().max_by_key(|x| x.0),
1644
+ slice.iter().max_by_key(|x| x.0)
1645
+ );
1646
+ }
1647
+ }
1648
+
1649
+ #[test]
1650
+ fn check_rev() {
1651
+ let a: Vec<usize> = (0..1024).rev().collect();
1652
+ let b: Vec<usize> = (0..1024).collect();
1653
+
1654
+ assert!(a.par_iter().rev().zip(b).all(|(&a, b)| a == b));
1655
+ }
1656
+
1657
+ #[test]
1658
+ fn scope_mix() {
1659
+ let counter_p = &AtomicUsize::new(0);
1660
+ scope(|s| {
1661
+ s.spawn(move |s| {
1662
+ divide_and_conquer(s, counter_p, 1024);
1663
+ });
1664
+ s.spawn(move |_| {
1665
+ let a: Vec<i32> = (0..1024).collect();
1666
+ let r1 = a.par_iter().map(|&i| i + 1).reduce_with(|i, j| i + j);
1667
+ let r2 = a.iter().map(|&i| i + 1).sum();
1668
+ assert_eq!(r1.unwrap(), r2);
1669
+ });
1670
+ });
1671
+ }
1672
+
1673
+ fn divide_and_conquer<'scope>(scope: &Scope<'scope>, counter: &'scope AtomicUsize, size: usize) {
1674
+ if size > 1 {
1675
+ scope.spawn(move |scope| divide_and_conquer(scope, counter, size / 2));
1676
+ scope.spawn(move |scope| divide_and_conquer(scope, counter, size / 2));
1677
+ } else {
1678
+ // count the leaves
1679
+ counter.fetch_add(1, Ordering::SeqCst);
1680
+ }
1681
+ }
1682
+
1683
+ #[test]
1684
+ fn check_split() {
1685
+ use std::ops::Range;
1686
+
1687
+ let a = (0..1024).into_par_iter();
1688
+
1689
+ let b = split(0..1024, |Range { start, end }| {
1690
+ let mid = (end - start) / 2;
1691
+ if mid > start {
1692
+ (start..mid, Some(mid..end))
1693
+ } else {
1694
+ (start..end, None)
1695
+ }
1696
+ })
1697
+ .flat_map(|range| range);
1698
+
1699
+ assert_eq!(a.collect::<Vec<_>>(), b.collect::<Vec<_>>());
1700
+ }
1701
+
1702
+ #[test]
1703
+ fn check_lengths() {
1704
+ fn check(min: usize, max: usize) {
1705
+ let range = 0..1024 * 1024;
1706
+
1707
+ // Check against normalized values.
1708
+ let min_check = Ord::min(Ord::max(min, 1), range.len());
1709
+ let max_check = Ord::max(max, min_check.saturating_add(min_check - 1));
1710
+
1711
+ assert!(
1712
+ range
1713
+ .into_par_iter()
1714
+ .with_min_len(min)
1715
+ .with_max_len(max)
1716
+ .fold(|| 0, |count, _| count + 1)
1717
+ .all(|c| c >= min_check && c <= max_check),
1718
+ "check_lengths failed {:?} -> {:?} ",
1719
+ (min, max),
1720
+ (min_check, max_check)
1721
+ );
1722
+ }
1723
+
1724
+ let lengths = [0, 1, 10, 100, 1_000, 10_000, 100_000, 1_000_000, usize::MAX];
1725
+ for &min in &lengths {
1726
+ for &max in &lengths {
1727
+ check(min, max);
1728
+ }
1729
+ }
1730
+ }
1731
+
1732
+ #[test]
1733
+ fn check_map_with() {
1734
+ let (sender, receiver) = mpsc::channel();
1735
+ let a: HashSet<_> = (0..1024).collect();
1736
+
1737
+ a.par_iter()
1738
+ .cloned()
1739
+ .map_with(sender, |s, i| s.send(i).unwrap())
1740
+ .count();
1741
+
1742
+ let b: HashSet<_> = receiver.iter().collect();
1743
+ assert_eq!(a, b);
1744
+ }
1745
+
1746
+ #[test]
1747
+ fn check_fold_with() {
1748
+ let (sender, receiver) = mpsc::channel();
1749
+ let a: HashSet<_> = (0..1024).collect();
1750
+
1751
+ a.par_iter()
1752
+ .cloned()
1753
+ .fold_with(sender, |s, i| {
1754
+ s.send(i).unwrap();
1755
+ s
1756
+ })
1757
+ .count();
1758
+
1759
+ let b: HashSet<_> = receiver.iter().collect();
1760
+ assert_eq!(a, b);
1761
+ }
1762
+
1763
+ #[test]
1764
+ fn check_for_each_with() {
1765
+ let (sender, receiver) = mpsc::channel();
1766
+ let a: HashSet<_> = (0..1024).collect();
1767
+
1768
+ a.par_iter()
1769
+ .cloned()
1770
+ .for_each_with(sender, |s, i| s.send(i).unwrap());
1771
+
1772
+ let b: HashSet<_> = receiver.iter().collect();
1773
+ assert_eq!(a, b);
1774
+ }
1775
+
1776
+ #[test]
1777
+ fn check_extend_items() {
1778
+ fn check<C>()
1779
+ where
1780
+ C: Default
1781
+ + Eq
1782
+ + Debug
1783
+ + Extend<i32>
1784
+ + for<'a> Extend<&'a i32>
1785
+ + ParallelExtend<i32>
1786
+ + for<'a> ParallelExtend<&'a i32>,
1787
+ {
1788
+ let mut serial = C::default();
1789
+ let mut parallel = C::default();
1790
+
1791
+ // extend with references
1792
+ let v: Vec<_> = (0..128).collect();
1793
+ serial.extend(&v);
1794
+ parallel.par_extend(&v);
1795
+ assert_eq!(serial, parallel);
1796
+
1797
+ // extend with values
1798
+ serial.extend(-128..0);
1799
+ parallel.par_extend(-128..0);
1800
+ assert_eq!(serial, parallel);
1801
+ }
1802
+
1803
+ check::<BTreeSet<_>>();
1804
+ check::<HashSet<_>>();
1805
+ check::<LinkedList<_>>();
1806
+ check::<Vec<_>>();
1807
+ check::<VecDeque<_>>();
1808
+ }
1809
+
1810
+ #[test]
1811
+ fn check_extend_heap() {
1812
+ let mut serial: BinaryHeap<_> = Default::default();
1813
+ let mut parallel: BinaryHeap<_> = Default::default();
1814
+
1815
+ // extend with references
1816
+ let v: Vec<_> = (0..128).collect();
1817
+ serial.extend(&v);
1818
+ parallel.par_extend(&v);
1819
+ assert_eq!(
1820
+ serial.clone().into_sorted_vec(),
1821
+ parallel.clone().into_sorted_vec()
1822
+ );
1823
+
1824
+ // extend with values
1825
+ serial.extend(-128..0);
1826
+ parallel.par_extend(-128..0);
1827
+ assert_eq!(serial.into_sorted_vec(), parallel.into_sorted_vec());
1828
+ }
1829
+
1830
+ #[test]
1831
+ fn check_extend_pairs() {
1832
+ fn check<C>()
1833
+ where
1834
+ C: Default
1835
+ + Eq
1836
+ + Debug
1837
+ + Extend<(usize, i32)>
1838
+ + for<'a> Extend<(&'a usize, &'a i32)>
1839
+ + ParallelExtend<(usize, i32)>
1840
+ + for<'a> ParallelExtend<(&'a usize, &'a i32)>,
1841
+ {
1842
+ let mut serial = C::default();
1843
+ let mut parallel = C::default();
1844
+
1845
+ // extend with references
1846
+ let m: HashMap<_, _> = (0..128).enumerate().collect();
1847
+ serial.extend(&m);
1848
+ parallel.par_extend(&m);
1849
+ assert_eq!(serial, parallel);
1850
+
1851
+ // extend with values
1852
+ let v: Vec<(_, _)> = (-128..0).enumerate().collect();
1853
+ serial.extend(v.clone());
1854
+ parallel.par_extend(v);
1855
+ assert_eq!(serial, parallel);
1856
+ }
1857
+
1858
+ check::<BTreeMap<usize, i32>>();
1859
+ check::<HashMap<usize, i32>>();
1860
+ }
1861
+
1862
+ #[test]
1863
+ fn check_unzip_into_vecs() {
1864
+ let mut a = vec![];
1865
+ let mut b = vec![];
1866
+ (0..1024)
1867
+ .into_par_iter()
1868
+ .map(|i| i * i)
1869
+ .enumerate()
1870
+ .unzip_into_vecs(&mut a, &mut b);
1871
+
1872
+ let (c, d): (Vec<_>, Vec<_>) = (0..1024).map(|i| i * i).enumerate().unzip();
1873
+ assert_eq!(a, c);
1874
+ assert_eq!(b, d);
1875
+ }
1876
+
1877
+ #[test]
1878
+ fn check_unzip() {
1879
+ // indexed, unindexed
1880
+ let (a, b): (Vec<_>, HashSet<_>) = (0..1024).into_par_iter().map(|i| i * i).enumerate().unzip();
1881
+ let (c, d): (Vec<_>, HashSet<_>) = (0..1024).map(|i| i * i).enumerate().unzip();
1882
+ assert_eq!(a, c);
1883
+ assert_eq!(b, d);
1884
+
1885
+ // unindexed, indexed
1886
+ let (a, b): (HashSet<_>, Vec<_>) = (0..1024).into_par_iter().map(|i| i * i).enumerate().unzip();
1887
+ let (c, d): (HashSet<_>, Vec<_>) = (0..1024).map(|i| i * i).enumerate().unzip();
1888
+ assert_eq!(a, c);
1889
+ assert_eq!(b, d);
1890
+
1891
+ // indexed, indexed
1892
+ let (a, b): (Vec<_>, Vec<_>) = (0..1024).into_par_iter().map(|i| i * i).enumerate().unzip();
1893
+ let (c, d): (Vec<_>, Vec<_>) = (0..1024).map(|i| i * i).enumerate().unzip();
1894
+ assert_eq!(a, c);
1895
+ assert_eq!(b, d);
1896
+
1897
+ // unindexed producer
1898
+ let (a, b): (Vec<_>, Vec<_>) = (0..1024)
1899
+ .into_par_iter()
1900
+ .filter_map(|i| Some((i, i * i)))
1901
+ .unzip();
1902
+ let (c, d): (Vec<_>, Vec<_>) = (0..1024).map(|i| (i, i * i)).unzip();
1903
+ assert_eq!(a, c);
1904
+ assert_eq!(b, d);
1905
+ }
1906
+
1907
+ #[test]
1908
+ fn check_partition() {
1909
+ let (a, b): (Vec<_>, Vec<_>) = (0..1024).into_par_iter().partition(|&i| i % 3 == 0);
1910
+ let (c, d): (Vec<_>, Vec<_>) = (0..1024).partition(|&i| i % 3 == 0);
1911
+ assert_eq!(a, c);
1912
+ assert_eq!(b, d);
1913
+ }
1914
+
1915
+ #[test]
1916
+ fn check_partition_map() {
1917
+ let input = "a b c 1 2 3 x y z";
1918
+ let (a, b): (Vec<_>, String) =
1919
+ input
1920
+ .par_split_whitespace()
1921
+ .partition_map(|s| match s.parse::<i32>() {
1922
+ Ok(n) => Either::Left(n),
1923
+ Err(_) => Either::Right(s),
1924
+ });
1925
+ assert_eq!(a, vec![1, 2, 3]);
1926
+ assert_eq!(b, "abcxyz");
1927
+ }
1928
+
1929
+ #[test]
1930
+ fn check_either() {
1931
+ type I = crate::vec::IntoIter<i32>;
1932
+ type E = Either<I, I>;
1933
+
1934
+ let v: Vec<i32> = (0..1024).collect();
1935
+
1936
+ // try iterating the left side
1937
+ let left: E = Either::Left(v.clone().into_par_iter());
1938
+ assert!(left.eq(v.clone()));
1939
+
1940
+ // try iterating the right side
1941
+ let right: E = Either::Right(v.clone().into_par_iter());
1942
+ assert!(right.eq(v.clone()));
1943
+
1944
+ // try an indexed iterator
1945
+ let left: E = Either::Left(v.clone().into_par_iter());
1946
+ assert!(left.enumerate().eq(v.into_par_iter().enumerate()));
1947
+ }
1948
+
1949
+ #[test]
1950
+ fn check_either_extend() {
1951
+ type E = Either<Vec<i32>, HashSet<i32>>;
1952
+
1953
+ let v: Vec<i32> = (0..1024).collect();
1954
+
1955
+ // try extending the left side
1956
+ let mut left: E = Either::Left(vec![]);
1957
+ left.par_extend(v.clone());
1958
+ assert_eq!(left.as_ref(), Either::Left(&v));
1959
+
1960
+ // try extending the right side
1961
+ let mut right: E = Either::Right(HashSet::default());
1962
+ right.par_extend(v.clone());
1963
+ assert_eq!(right, Either::Right(v.iter().cloned().collect()));
1964
+ }
1965
+
1966
+ #[test]
1967
+ fn check_interleave_eq() {
1968
+ let xs: Vec<usize> = (0..10).collect();
1969
+ let ys: Vec<usize> = (10..20).collect();
1970
+
1971
+ let mut actual = vec![];
1972
+ xs.par_iter()
1973
+ .interleave(&ys)
1974
+ .map(|&i| i)
1975
+ .collect_into_vec(&mut actual);
1976
+
1977
+ let expected: Vec<usize> = (0..10)
1978
+ .zip(10..20)
1979
+ .flat_map(|(i, j)| vec![i, j].into_iter())
1980
+ .collect();
1981
+ assert_eq!(expected, actual);
1982
+ }
1983
+
1984
+ #[test]
1985
+ fn check_interleave_uneven() {
1986
+ let cases: Vec<(Vec<usize>, Vec<usize>, Vec<usize>)> = vec![
1987
+ (
1988
+ (0..9).collect(),
1989
+ vec![10],
1990
+ vec![0, 10, 1, 2, 3, 4, 5, 6, 7, 8],
1991
+ ),
1992
+ (
1993
+ vec![10],
1994
+ (0..9).collect(),
1995
+ vec![10, 0, 1, 2, 3, 4, 5, 6, 7, 8],
1996
+ ),
1997
+ (
1998
+ (0..5).collect(),
1999
+ (5..10).collect(),
2000
+ (0..5)
2001
+ .zip(5..10)
2002
+ .flat_map(|(i, j)| vec![i, j].into_iter())
2003
+ .collect(),
2004
+ ),
2005
+ (vec![], (0..9).collect(), (0..9).collect()),
2006
+ ((0..9).collect(), vec![], (0..9).collect()),
2007
+ (
2008
+ (0..50).collect(),
2009
+ (50..100).collect(),
2010
+ (0..50)
2011
+ .zip(50..100)
2012
+ .flat_map(|(i, j)| vec![i, j].into_iter())
2013
+ .collect(),
2014
+ ),
2015
+ ];
2016
+
2017
+ for (i, (xs, ys, expected)) in cases.into_iter().enumerate() {
2018
+ let mut res = vec![];
2019
+ xs.par_iter()
2020
+ .interleave(&ys)
2021
+ .map(|&i| i)
2022
+ .collect_into_vec(&mut res);
2023
+ assert_eq!(expected, res, "Case {i} failed");
2024
+
2025
+ res.truncate(0);
2026
+ xs.par_iter()
2027
+ .interleave(&ys)
2028
+ .rev()
2029
+ .map(|&i| i)
2030
+ .collect_into_vec(&mut res);
2031
+ assert_eq!(
2032
+ expected.into_iter().rev().collect::<Vec<usize>>(),
2033
+ res,
2034
+ "Case {i} reversed failed"
2035
+ );
2036
+ }
2037
+ }
2038
+
2039
+ #[test]
2040
+ fn check_interleave_shortest() {
2041
+ let cases: Vec<(Vec<usize>, Vec<usize>, Vec<usize>)> = vec![
2042
+ ((0..9).collect(), vec![10], vec![0, 10, 1]),
2043
+ (vec![10], (0..9).collect(), vec![10, 0]),
2044
+ (
2045
+ (0..5).collect(),
2046
+ (5..10).collect(),
2047
+ (0..5)
2048
+ .zip(5..10)
2049
+ .flat_map(|(i, j)| vec![i, j].into_iter())
2050
+ .collect(),
2051
+ ),
2052
+ (vec![], (0..9).collect(), vec![]),
2053
+ ((0..9).collect(), vec![], vec![0]),
2054
+ (
2055
+ (0..50).collect(),
2056
+ (50..100).collect(),
2057
+ (0..50)
2058
+ .zip(50..100)
2059
+ .flat_map(|(i, j)| vec![i, j].into_iter())
2060
+ .collect(),
2061
+ ),
2062
+ ];
2063
+
2064
+ for (i, (xs, ys, expected)) in cases.into_iter().enumerate() {
2065
+ let mut res = vec![];
2066
+ xs.par_iter()
2067
+ .interleave_shortest(&ys)
2068
+ .map(|&i| i)
2069
+ .collect_into_vec(&mut res);
2070
+ assert_eq!(expected, res, "Case {i} failed");
2071
+
2072
+ res.truncate(0);
2073
+ xs.par_iter()
2074
+ .interleave_shortest(&ys)
2075
+ .rev()
2076
+ .map(|&i| i)
2077
+ .collect_into_vec(&mut res);
2078
+ assert_eq!(
2079
+ expected.into_iter().rev().collect::<Vec<usize>>(),
2080
+ res,
2081
+ "Case {i} reversed failed"
2082
+ );
2083
+ }
2084
+ }
2085
+
2086
+ #[test]
2087
+ #[should_panic(expected = "chunk_size must not be zero")]
2088
+ fn check_chunks_zero_size() {
2089
+ let _: Vec<Vec<i32>> = vec![1, 2, 3].into_par_iter().chunks(0).collect();
2090
+ }
2091
+
2092
+ #[test]
2093
+ fn check_chunks_even_size() {
2094
+ assert_eq!(
2095
+ vec![vec![1, 2, 3], vec![4, 5, 6], vec![7, 8, 9]],
2096
+ (1..10).into_par_iter().chunks(3).collect::<Vec<Vec<i32>>>()
2097
+ );
2098
+ }
2099
+
2100
+ #[test]
2101
+ fn check_chunks_empty() {
2102
+ let v: Vec<i32> = vec![];
2103
+ let expected: Vec<Vec<i32>> = vec![];
2104
+ assert_eq!(
2105
+ expected,
2106
+ v.into_par_iter().chunks(2).collect::<Vec<Vec<i32>>>()
2107
+ );
2108
+ }
2109
+
2110
+ #[test]
2111
+ fn check_chunks_len() {
2112
+ assert_eq!(4, (0..8).into_par_iter().chunks(2).len());
2113
+ assert_eq!(3, (0..9).into_par_iter().chunks(3).len());
2114
+ assert_eq!(3, (0..8).into_par_iter().chunks(3).len());
2115
+ assert_eq!(1, [1].par_iter().chunks(3).len());
2116
+ assert_eq!(0, (0..0).into_par_iter().chunks(3).len());
2117
+ }
2118
+
2119
+ #[test]
2120
+ fn check_chunks_uneven() {
2121
+ let cases: Vec<(Vec<u32>, usize, Vec<Vec<u32>>)> = vec![
2122
+ ((0..5).collect(), 3, vec![vec![0, 1, 2], vec![3, 4]]),
2123
+ (vec![1], 5, vec![vec![1]]),
2124
+ ((0..4).collect(), 3, vec![vec![0, 1, 2], vec![3]]),
2125
+ ];
2126
+
2127
+ for (i, (v, n, expected)) in cases.into_iter().enumerate() {
2128
+ let mut res: Vec<Vec<u32>> = vec![];
2129
+ v.par_iter()
2130
+ .chunks(n)
2131
+ .map(|v| v.into_iter().cloned().collect())
2132
+ .collect_into_vec(&mut res);
2133
+ assert_eq!(expected, res, "Case {i} failed");
2134
+
2135
+ res.truncate(0);
2136
+ v.into_par_iter().chunks(n).rev().collect_into_vec(&mut res);
2137
+ assert_eq!(
2138
+ expected.into_iter().rev().collect::<Vec<Vec<u32>>>(),
2139
+ res,
2140
+ "Case {i} reversed failed"
2141
+ );
2142
+ }
2143
+ }
2144
+
2145
+ #[test]
2146
+ #[ignore] // it's quick enough on optimized 32-bit platforms, but otherwise... ... ...
2147
+ #[should_panic(expected = "overflow")]
2148
+ #[cfg(debug_assertions)]
2149
+ fn check_repeat_unbounded() {
2150
+ // use just one thread, so we don't get infinite adaptive splitting
2151
+ // (forever stealing and re-splitting jobs that will panic on overflow)
2152
+ let pool = ThreadPoolBuilder::new().num_threads(1).build().unwrap();
2153
+ pool.install(|| {
2154
+ println!("counted {} repeats", repeat(()).count());
2155
+ });
2156
+ }
2157
+
2158
+ #[test]
2159
+ fn check_repeat_find_any() {
2160
+ let even = repeat(4).find_any(|&x| x % 2 == 0);
2161
+ assert_eq!(even, Some(4));
2162
+ }
2163
+
2164
+ #[test]
2165
+ fn check_repeat_take() {
2166
+ let v: Vec<_> = repeat(4).take(4).collect();
2167
+ assert_eq!(v, [4, 4, 4, 4]);
2168
+ }
2169
+
2170
+ #[test]
2171
+ fn check_repeat_zip() {
2172
+ let v = vec![4, 4, 4, 4];
2173
+ let mut fours: Vec<_> = repeat(4).zip(v).collect();
2174
+ assert_eq!(fours.len(), 4);
2175
+ while let Some(item) = fours.pop() {
2176
+ assert_eq!(item, (4, 4));
2177
+ }
2178
+ }
2179
+
2180
+ #[test]
2181
+ fn check_repeat_n_zip_left() {
2182
+ let v = vec![4, 4, 4, 4];
2183
+ let mut fours: Vec<_> = repeat_n(4, usize::MAX).zip(v).collect();
2184
+ assert_eq!(fours.len(), 4);
2185
+ while let Some(item) = fours.pop() {
2186
+ assert_eq!(item, (4, 4));
2187
+ }
2188
+ }
2189
+
2190
+ #[test]
2191
+ fn check_repeat_n_zip_right() {
2192
+ let v = vec![4, 4, 4, 4];
2193
+ let mut fours: Vec<_> = v.into_par_iter().zip(repeat_n(4, usize::MAX)).collect();
2194
+ assert_eq!(fours.len(), 4);
2195
+ while let Some(item) = fours.pop() {
2196
+ assert_eq!(item, (4, 4));
2197
+ }
2198
+ }
2199
+
2200
+ #[test]
2201
+ fn count_repeat_n_clones() {
2202
+ use std::sync::atomic::{AtomicUsize, Ordering};
2203
+
2204
+ static CLONES: AtomicUsize = AtomicUsize::new(0);
2205
+ static DROPS: AtomicUsize = AtomicUsize::new(0);
2206
+
2207
+ struct Counter;
2208
+
2209
+ impl Clone for Counter {
2210
+ fn clone(&self) -> Self {
2211
+ CLONES.fetch_add(1, Ordering::Relaxed);
2212
+ Counter
2213
+ }
2214
+ }
2215
+
2216
+ impl Drop for Counter {
2217
+ fn drop(&mut self) {
2218
+ DROPS.fetch_add(1, Ordering::Relaxed);
2219
+ }
2220
+ }
2221
+
2222
+ #[track_caller]
2223
+ fn check(clones: usize, drops: usize) {
2224
+ assert_eq!(CLONES.swap(0, Ordering::Relaxed), clones, "clones");
2225
+ assert_eq!(DROPS.swap(0, Ordering::Relaxed), drops, "drops");
2226
+ }
2227
+
2228
+ drop(repeat_n(Counter, 100));
2229
+ check(0, 1);
2230
+
2231
+ let empty = repeat_n(Counter, 0);
2232
+ check(0, 1);
2233
+ let empty2 = empty.clone();
2234
+ check(0, 0);
2235
+ assert_eq!(empty.count(), 0);
2236
+ assert_eq!(empty2.count(), 0);
2237
+ check(0, 0);
2238
+
2239
+ let par_iter = repeat_n(Counter, 100);
2240
+ let par_iter2 = par_iter.clone();
2241
+ check(1, 0);
2242
+ assert_eq!(par_iter.count(), 100);
2243
+ check(99, 100);
2244
+ assert_eq!(par_iter2.map(std::mem::forget).count(), 100);
2245
+ check(99, 0);
2246
+
2247
+ // Clone once in `split_at` and again for the first item, leaving its unused tail.
2248
+ // The other split doesn't have a tail, so it can avoid a clone.
2249
+ let step99 = repeat_n(Counter, 100).step_by(99);
2250
+ assert_eq!(step99.count(), 2);
2251
+ check(2, 3);
2252
+
2253
+ // Same without any parallel splitting
2254
+ let step99 = repeat_n(Counter, 100).step_by(99).with_min_len(2);
2255
+ assert_eq!(step99.count(), 2);
2256
+ check(1, 2);
2257
+
2258
+ // Clone once in `split_at` and again for both items, leaving both unused tails.
2259
+ let step50 = repeat_n(Counter, 100).step_by(50);
2260
+ assert_eq!(step50.count(), 2);
2261
+ check(3, 4);
2262
+ }
2263
+
2264
+ #[test]
2265
+ fn check_empty() {
2266
+ // drive_unindexed
2267
+ let mut v: Vec<i32> = empty().filter(|_| unreachable!()).collect();
2268
+ assert!(v.is_empty());
2269
+
2270
+ // drive (indexed)
2271
+ empty().collect_into_vec(&mut v);
2272
+ assert!(v.is_empty());
2273
+
2274
+ // with_producer
2275
+ let v: Vec<(i32, i32)> = empty().zip(1..10).collect();
2276
+ assert!(v.is_empty());
2277
+ }
2278
+
2279
+ #[test]
2280
+ fn check_once() {
2281
+ // drive_unindexed
2282
+ let mut v: Vec<i32> = once(42).filter(|_| true).collect();
2283
+ assert_eq!(v, &[42]);
2284
+
2285
+ // drive (indexed)
2286
+ once(42).collect_into_vec(&mut v);
2287
+ assert_eq!(v, &[42]);
2288
+
2289
+ // with_producer
2290
+ let v: Vec<(i32, i32)> = once(42).zip(1..10).collect();
2291
+ assert_eq!(v, &[(42, 1)]);
2292
+ }
2293
+
2294
+ #[test]
2295
+ fn check_update() {
2296
+ let mut v: Vec<Vec<_>> = vec![vec![1], vec![3, 2, 1]];
2297
+ v.par_iter_mut().update(|v| v.push(0)).for_each(|_| ());
2298
+
2299
+ assert_eq!(v, vec![vec![1, 0], vec![3, 2, 1, 0]]);
2300
+ }
2301
+
2302
+ #[test]
2303
+ fn walk_tree_prefix() {
2304
+ let v: Vec<u32> = crate::iter::walk_tree_prefix(0u32..100, |r| {
2305
+ // root is smallest
2306
+ let mid = (r.start + 1 + r.end) / 2;
2307
+ // small indices to the left, large to the right
2308
+ std::iter::once((r.start + 1)..mid)
2309
+ .chain(std::iter::once(mid..r.end))
2310
+ .filter(|r| !r.is_empty())
2311
+ })
2312
+ .map(|r| r.start)
2313
+ .collect();
2314
+ assert!(v.into_iter().eq(0..100));
2315
+ }
2316
+
2317
+ #[test]
2318
+ fn walk_tree_postfix() {
2319
+ let v: Vec<_> = crate::iter::walk_tree_postfix(0u64..100, |r| {
2320
+ // root is largest
2321
+ let mid = (r.start + r.end - 1) / 2;
2322
+ // small indices to the left, large to the right
2323
+ std::iter::once(r.start..mid)
2324
+ .chain(std::iter::once(mid..(r.end - 1)))
2325
+ .filter(|r| !r.is_empty())
2326
+ })
2327
+ .map(|r| r.end - 1)
2328
+ .collect();
2329
+ assert!(v.into_iter().eq(0..100));
2330
+ }
2331
+
2332
+ #[test]
2333
+ fn walk_flat_tree_prefix() {
2334
+ let v: Vec<_> =
2335
+ crate::iter::walk_tree_prefix(0, |&e| if e < 99 { Some(e + 1) } else { None }).collect();
2336
+ assert!(v.into_iter().eq(0..100));
2337
+ }
2338
+
2339
+ #[test]
2340
+ fn walk_flat_tree_postfix() {
2341
+ let v: Vec<_> =
2342
+ crate::iter::walk_tree_postfix(99, |&e| if e > 0 { Some(e - 1) } else { None }).collect();
2343
+ assert!(v.into_iter().eq(0..100));
2344
+ }
2345
+
2346
+ #[test]
2347
+ fn walk_tree_prefix_degree5() {
2348
+ let depth = 5;
2349
+ let nodes_number = (1 - 5i32.pow(depth)) / (1 - 5);
2350
+ let nodes = (0..nodes_number).collect::<Vec<_>>();
2351
+ let v: Vec<i32> = crate::iter::walk_tree_prefix(nodes.as_slice(), |&r| {
2352
+ r.split_first()
2353
+ .into_iter()
2354
+ .filter_map(|(_, r)| if r.is_empty() { None } else { Some(r) })
2355
+ .flat_map(|r| r.chunks(r.len() / 5))
2356
+ })
2357
+ .filter_map(|r| r.first().copied())
2358
+ .collect();
2359
+ assert_eq!(v, nodes);
2360
+ }
2361
+
2362
+ #[test]
2363
+ fn walk_tree_postfix_degree5() {
2364
+ let depth = 5;
2365
+ let nodes_number = (1 - 5i32.pow(depth)) / (1 - 5);
2366
+ let nodes = (0..nodes_number).collect::<Vec<_>>();
2367
+ let v: Vec<i32> = crate::iter::walk_tree_postfix(nodes.as_slice(), |&r| {
2368
+ r.split_last()
2369
+ .into_iter()
2370
+ .filter_map(|(_, r)| if r.is_empty() { None } else { Some(r) })
2371
+ .flat_map(|r| r.chunks(r.len() / 5))
2372
+ })
2373
+ .filter_map(|r| r.last().copied())
2374
+ .collect();
2375
+ assert_eq!(v, nodes)
2376
+ }
2377
+
2378
+ #[test]
2379
+ fn blocks() {
2380
+ let count = AtomicUsize::new(0);
2381
+ let v: Vec<usize> = (0..1000)
2382
+ .into_par_iter()
2383
+ .map(|_| count.fetch_add(1, Ordering::Relaxed))
2384
+ .by_uniform_blocks(100)
2385
+ .collect();
2386
+ let m = v
2387
+ .chunks(100)
2388
+ .map(|c| c.iter().max().copied().unwrap())
2389
+ .collect::<Vec<usize>>();
2390
+ assert!(m.windows(2).all(|w| w[0].lt(&w[1])));
2391
+ assert_eq!(v.len(), 1000);
2392
+ }