code_ownership 2.1.4 → 2.2.0
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.
- checksums.yaml +4 -4
- data/.cargo/config +2 -2
- data/Cargo.lock +6 -59
- data/ext/cargo-vendor/codeowners-0.5.0/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/codeowners-0.5.0/.github/workflows/audit.yml +31 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/.github/workflows/ci.yml +11 -0
- data/ext/cargo-vendor/codeowners-0.5.0/.github/workflows/codeql.yml +21 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/Cargo.lock +27 -115
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/Cargo.toml +44 -3
- data/ext/cargo-vendor/codeowners-0.5.0/perf/README.md +204 -0
- data/ext/cargo-vendor/codeowners-0.5.0/perf/compare.sh +23 -0
- data/ext/cargo-vendor/codeowners-0.5.0/perf/run.sh +28 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/rust-toolchain.toml +1 -1
- data/ext/cargo-vendor/codeowners-0.5.0/src/bin/codeowners-perf.rs +719 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/cache/file.rs +9 -9
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/cache/mod.rs +4 -4
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/cache/noop.rs +4 -4
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/cli.rs +7 -7
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/main.rs +3 -3
- data/ext/cargo-vendor/codeowners-0.5.0/src/ownership/file_owner_resolver.rs +829 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/validator.rs +108 -15
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership.rs +22 -3
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/project.rs +4 -4
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/project_builder.rs +40 -14
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/project_file_builder.rs +2 -2
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/runner/api.rs +8 -5
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/runner/types.rs +1 -2
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/runner.rs +39 -29
- data/ext/cargo-vendor/codeowners-0.5.0/tests/annotation_in_unowned_team_glob_test.rs +64 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/common/mod.rs +1 -1
- data/ext/cargo-vendor/codeowners-0.5.0/tests/directory_codeowner_github_team_test.rs +22 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/empty_directory_codeowner_test.rs +26 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/annotation_in_unowned_team_glob/.github/CODEOWNERS +18 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/annotation_in_unowned_team_glob/config/code_ownership.yml +4 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/annotation_in_unowned_team_glob/config/teams/alpha.yml +7 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/annotation_in_unowned_team_glob/config/teams/beta.yml +3 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/annotation_in_unowned_team_glob/ruby/app/services/alpha_owned.rb +2 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/annotation_in_unowned_team_glob/ruby/app/services/beta_owned.rb +4 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team/.github/CODEOWNERS +15 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team/app/by_handle/.codeowner +1 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team/app/by_handle/handled.rb +2 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team/app/by_name/named.rb +2 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/empty-directory-codeowner/.github/CODEOWNERS +14 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/empty-directory-codeowner/app/services/.codeowner +1 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/empty-directory-codeowner/app/services/nested/.codeowner +1 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/empty-directory-codeowner/app/services/nested/nested_file.rb +2 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/empty-directory-codeowner/config/code_ownership.yml +10 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/empty-directory-codeowner/config/teams/foo.yml +5 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/invalid-directory-codeowner/.github/CODEOWNERS +14 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/invalid-directory-codeowner/app/services/.codeowner +1 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/invalid-directory-codeowner/app/services/nested/.codeowner +1 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/invalid-directory-codeowner/app/services/nested/nested_file.rb +2 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/invalid-directory-codeowner/config/code_ownership.yml +10 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/invalid-directory-codeowner/config/teams/foo.yml +5 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/multiple-directory-owners/app/services/.codeowner +1 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/multiple-directory-owners/config/code_ownership.yml +10 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/fixtures/multiple-directory-owners/config/teams/foo.yml +5 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/global_gitignore_test.rs +50 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/invalid_directory_codeowner_test.rs +26 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/invalid_project_test.rs +9 -9
- data/ext/cargo-vendor/codeowners-0.5.0/tests/perf_harness_test.rs +245 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/untracked_new_file_test.rs +63 -0
- data/ext/cargo-vendor/codeowners-0.5.0/tests/untracked_source_file_test.rs +40 -0
- data/ext/cargo-vendor/error-stack-0.8.0/.cargo-checksum.json +1 -0
- data/ext/cargo-vendor/error-stack-0.8.0/.cargo_vcs_info.json +6 -0
- data/ext/cargo-vendor/error-stack-0.8.0/.justfile +16 -0
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/CHANGELOG.md +50 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/Cargo.lock +253 -310
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/Cargo.toml +107 -52
- data/ext/cargo-vendor/error-stack-0.8.0/Cargo.toml.orig +109 -0
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/README.md +16 -18
- data/ext/cargo-vendor/error-stack-0.8.0/build.rs +28 -0
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/examples/demo.rs +21 -19
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/examples/detect.rs +6 -6
- data/ext/cargo-vendor/error-stack-0.8.0/examples/exit_code.rs +25 -0
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/examples/parse_config.rs +5 -5
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/compat/anyhow.rs +7 -7
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/compat/eyre.rs +7 -6
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/compat/mod.rs +7 -9
- data/ext/cargo-vendor/error-stack-0.8.0/src/context.rs +52 -0
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/error.rs +2 -9
- data/ext/cargo-vendor/error-stack-0.8.0/src/ext/iter.rs +286 -0
- data/ext/cargo-vendor/error-stack-0.8.0/src/ext/mod.rs +19 -0
- data/ext/cargo-vendor/error-stack-0.8.0/src/ext/stream.rs +212 -0
- data/ext/cargo-vendor/error-stack-0.8.0/src/ext/tuple.rs +218 -0
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/charset.rs +12 -12
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/color.rs +30 -30
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/config.rs +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/hook.rs +23 -24
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/location.rs +3 -3
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/mod.rs +62 -52
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/frame/frame_impl.rs +12 -15
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/frame/kind.rs +11 -10
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/frame/mod.rs +8 -10
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/future.rs +57 -63
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/hook/context.rs +18 -20
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/hook/mod.rs +16 -15
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/iter.rs +12 -57
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/lib.rs +99 -87
- data/ext/cargo-vendor/error-stack-0.8.0/src/macros.rs +212 -0
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/report.rs +525 -207
- data/ext/cargo-vendor/error-stack-0.8.0/src/result.rs +137 -0
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/serde.rs +53 -38
- data/ext/cargo-vendor/error-stack-0.8.0/src/sink.rs +672 -0
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/common.rs +36 -24
- data/ext/cargo-vendor/error-stack-0.8.0/tests/compiletest.rs +22 -0
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__charset_ascii.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__charset_utf8.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__diagnostics_add.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__doc.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__emit.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__emit_alt.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__hookcontext_cast.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__hookcontext_decrement.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__hookcontext_emit.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__hookcontext_increment.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__hookcontext_storage.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__preference_color.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__preference_emphasis.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt__preference_none.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/fmt_doc_alt.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/hook__debug_hook.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/hook__debug_hook_provide.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/lib__suggestion.snap +2 -2
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/report_debug__doc.snap +3 -3
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__complex.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_location.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__linear.snap +2 -2
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__linear_ext.snap +2 -2
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__multiline_context.snap +3 -3
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__sources.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__sources_transparent.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__sources_nested.snap +10 -10
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__sources_nested@spantrace-backtrace.snap +10 -10
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__sources_nested_alternate.snap +10 -10
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__sources_nested_alternate@spantrace-backtrace.snap +10 -10
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_serialize__attachment.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_serialize__context.snap +1 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_serialize__multiple_sources.snap +2 -2
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_serialize__multiple_sources_at_root.snap +2 -2
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_attach.rs +41 -15
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_attach_printable.rs +14 -15
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_backtrace.rs +0 -1
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_change_context.rs +31 -9
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_compatibility.rs +8 -17
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_conversion.rs +25 -3
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_debug.rs +91 -91
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_display.rs +8 -9
- data/ext/cargo-vendor/error-stack-0.8.0/tests/test_downcast.rs +101 -0
- data/ext/cargo-vendor/error-stack-0.8.0/tests/test_extend.rs +99 -0
- data/ext/cargo-vendor/error-stack-0.8.0/tests/test_frame.rs +136 -0
- data/ext/cargo-vendor/error-stack-0.8.0/tests/test_iter.rs +132 -0
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_macros.rs +5 -31
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_provision.rs +3 -2
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_serialize.rs +14 -14
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/test_span_trace.rs +10 -11
- data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/attach_diagnostics.rs +21 -0
- data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/attach_diagnostics.stderr +23 -0
- data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/frames_mut_escape.rs +28 -0
- data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/frames_mut_escape.stderr +13 -0
- data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/macro_invalid_args.rs +32 -0
- data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/macro_invalid_args.stderr +132 -0
- data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/missing_args.rs +32 -0
- data/ext/cargo-vendor/error-stack-0.8.0/tests/ui/missing_args.stderr +35 -0
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/ui/must_use.rs +3 -3
- data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/ui/must_use.stderr +1 -1
- data/ext/code_ownership/Cargo.toml +1 -1
- data/ext/code_ownership/src/lib.rs +13 -1
- data/lib/code_ownership/version.rb +1 -1
- data/lib/code_ownership.rb +3 -0
- metadata +340 -431
- data/ext/cargo-vendor/ahash-0.7.8/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/ahash-0.7.8/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/ahash-0.7.8/.github/workflows/rust.yml +0 -151
- data/ext/cargo-vendor/ahash-0.7.8/Cargo.toml +0 -149
- data/ext/cargo-vendor/ahash-0.7.8/Cargo.toml.orig +0 -96
- data/ext/cargo-vendor/ahash-0.7.8/FAQ.md +0 -118
- data/ext/cargo-vendor/ahash-0.7.8/LICENSE-APACHE +0 -201
- data/ext/cargo-vendor/ahash-0.7.8/LICENSE-MIT +0 -25
- data/ext/cargo-vendor/ahash-0.7.8/README.md +0 -110
- data/ext/cargo-vendor/ahash-0.7.8/build.rs +0 -47
- data/ext/cargo-vendor/ahash-0.7.8/rustfmt.toml +0 -1
- data/ext/cargo-vendor/ahash-0.7.8/src/aes_hash.rs +0 -440
- data/ext/cargo-vendor/ahash-0.7.8/src/convert.rs +0 -167
- data/ext/cargo-vendor/ahash-0.7.8/src/fallback_hash.rs +0 -392
- data/ext/cargo-vendor/ahash-0.7.8/src/hash_map.rs +0 -371
- data/ext/cargo-vendor/ahash-0.7.8/src/hash_quality_test.rs +0 -517
- data/ext/cargo-vendor/ahash-0.7.8/src/hash_set.rs +0 -313
- data/ext/cargo-vendor/ahash-0.7.8/src/lib.rs +0 -263
- data/ext/cargo-vendor/ahash-0.7.8/src/operations.rs +0 -330
- data/ext/cargo-vendor/ahash-0.7.8/src/random_state.rs +0 -363
- data/ext/cargo-vendor/ahash-0.7.8/src/specialize.rs +0 -239
- data/ext/cargo-vendor/ahash-0.7.8/tests/bench.rs +0 -154
- data/ext/cargo-vendor/ahash-0.7.8/tests/map_tests.rs +0 -203
- data/ext/cargo-vendor/ahash-0.7.8/tests/nopanic.rs +0 -72
- data/ext/cargo-vendor/codeowners-0.3.3/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/codeowners-0.3.3/.github/workflows/audit.yml +0 -19
- data/ext/cargo-vendor/codeowners-0.3.3/src/ownership/file_owner_resolver.rs +0 -416
- data/ext/cargo-vendor/error-stack-0.5.0/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/error-stack-0.5.0/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/error-stack-0.5.0/.justfile +0 -58
- data/ext/cargo-vendor/error-stack-0.5.0/Cargo.toml.orig +0 -87
- data/ext/cargo-vendor/error-stack-0.5.0/build.rs +0 -29
- data/ext/cargo-vendor/error-stack-0.5.0/examples/exit_code.rs +0 -24
- data/ext/cargo-vendor/error-stack-0.5.0/rust-toolchain.toml +0 -4
- data/ext/cargo-vendor/error-stack-0.5.0/src/context.rs +0 -132
- data/ext/cargo-vendor/error-stack-0.5.0/src/macros.rs +0 -253
- data/ext/cargo-vendor/error-stack-0.5.0/src/result.rs +0 -267
- data/ext/cargo-vendor/error-stack-0.5.0/tests/compiletest.rs +0 -7
- data/ext/cargo-vendor/error-stack-0.5.0/tests/snapshots/test_debug__sources_nested@backtrace.snap +0 -104
- data/ext/cargo-vendor/error-stack-0.5.0/tests/snapshots/test_debug__sources_nested@spantrace.snap +0 -104
- data/ext/cargo-vendor/error-stack-0.5.0/tests/snapshots/test_debug__sources_nested_alternate@backtrace.snap +0 -104
- data/ext/cargo-vendor/error-stack-0.5.0/tests/snapshots/test_debug__sources_nested_alternate@spantrace.snap +0 -104
- data/ext/cargo-vendor/error-stack-0.5.0/tests/test_downcast.rs +0 -41
- data/ext/cargo-vendor/error-stack-0.5.0/tests/test_extend.rs +0 -78
- data/ext/cargo-vendor/error-stack-0.5.0/tests/test_frame.rs +0 -126
- data/ext/cargo-vendor/error-stack-0.5.0/tests/test_iter.rs +0 -99
- data/ext/cargo-vendor/error-stack-0.5.0/tests/ui/macro_invalid_args.rs +0 -60
- data/ext/cargo-vendor/error-stack-0.5.0/tests/ui/macro_invalid_args.stderr +0 -101
- data/ext/cargo-vendor/getrandom-0.2.16/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/getrandom-0.2.16/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/getrandom-0.2.16/CHANGELOG.md +0 -498
- data/ext/cargo-vendor/getrandom-0.2.16/Cargo.lock +0 -354
- data/ext/cargo-vendor/getrandom-0.2.16/Cargo.toml +0 -121
- data/ext/cargo-vendor/getrandom-0.2.16/Cargo.toml.orig +0 -67
- data/ext/cargo-vendor/getrandom-0.2.16/LICENSE-APACHE +0 -201
- data/ext/cargo-vendor/getrandom-0.2.16/LICENSE-MIT +0 -26
- data/ext/cargo-vendor/getrandom-0.2.16/README.md +0 -81
- data/ext/cargo-vendor/getrandom-0.2.16/SECURITY.md +0 -13
- data/ext/cargo-vendor/getrandom-0.2.16/benches/buffer.rs +0 -71
- data/ext/cargo-vendor/getrandom-0.2.16/src/apple-other.rs +0 -24
- data/ext/cargo-vendor/getrandom-0.2.16/src/custom.rs +0 -105
- data/ext/cargo-vendor/getrandom-0.2.16/src/error.rs +0 -189
- data/ext/cargo-vendor/getrandom-0.2.16/src/error_impls.rs +0 -15
- data/ext/cargo-vendor/getrandom-0.2.16/src/espidf.rs +0 -18
- data/ext/cargo-vendor/getrandom-0.2.16/src/fuchsia.rs +0 -13
- data/ext/cargo-vendor/getrandom-0.2.16/src/getentropy.rs +0 -21
- data/ext/cargo-vendor/getrandom-0.2.16/src/getrandom.rs +0 -25
- data/ext/cargo-vendor/getrandom-0.2.16/src/hermit.rs +0 -29
- data/ext/cargo-vendor/getrandom-0.2.16/src/js.rs +0 -155
- data/ext/cargo-vendor/getrandom-0.2.16/src/lazy.rs +0 -56
- data/ext/cargo-vendor/getrandom-0.2.16/src/lib.rs +0 -407
- data/ext/cargo-vendor/getrandom-0.2.16/src/linux_android.rs +0 -7
- data/ext/cargo-vendor/getrandom-0.2.16/src/linux_android_with_fallback.rs +0 -33
- data/ext/cargo-vendor/getrandom-0.2.16/src/netbsd.rs +0 -46
- data/ext/cargo-vendor/getrandom-0.2.16/src/rdrand.rs +0 -121
- data/ext/cargo-vendor/getrandom-0.2.16/src/solaris.rs +0 -34
- data/ext/cargo-vendor/getrandom-0.2.16/src/solid.rs +0 -18
- data/ext/cargo-vendor/getrandom-0.2.16/src/use_file.rs +0 -120
- data/ext/cargo-vendor/getrandom-0.2.16/src/util.rs +0 -35
- data/ext/cargo-vendor/getrandom-0.2.16/src/util_libc.rs +0 -162
- data/ext/cargo-vendor/getrandom-0.2.16/src/vxworks.rs +0 -29
- data/ext/cargo-vendor/getrandom-0.2.16/src/wasi.rs +0 -17
- data/ext/cargo-vendor/getrandom-0.2.16/src/windows.rs +0 -59
- data/ext/cargo-vendor/getrandom-0.2.16/tests/common/mod.rs +0 -100
- data/ext/cargo-vendor/getrandom-0.2.16/tests/custom.rs +0 -54
- data/ext/cargo-vendor/getrandom-0.2.16/tests/normal.rs +0 -11
- data/ext/cargo-vendor/getrandom-0.2.16/tests/rdrand.rs +0 -22
- data/ext/cargo-vendor/hashbrown-0.12.3/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/hashbrown-0.12.3/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/hashbrown-0.12.3/CHANGELOG.md +0 -402
- data/ext/cargo-vendor/hashbrown-0.12.3/Cargo.toml +0 -113
- data/ext/cargo-vendor/hashbrown-0.12.3/Cargo.toml.orig +0 -60
- data/ext/cargo-vendor/hashbrown-0.12.3/LICENSE-APACHE +0 -201
- data/ext/cargo-vendor/hashbrown-0.12.3/LICENSE-MIT +0 -25
- data/ext/cargo-vendor/hashbrown-0.12.3/README.md +0 -126
- data/ext/cargo-vendor/hashbrown-0.12.3/benches/bench.rs +0 -331
- data/ext/cargo-vendor/hashbrown-0.12.3/benches/insert_unique_unchecked.rs +0 -32
- data/ext/cargo-vendor/hashbrown-0.12.3/clippy.toml +0 -1
- data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/mod.rs +0 -4
- data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/rayon/helpers.rs +0 -27
- data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/rayon/map.rs +0 -734
- data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/rayon/mod.rs +0 -4
- data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/rayon/raw.rs +0 -231
- data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/rayon/set.rs +0 -659
- data/ext/cargo-vendor/hashbrown-0.12.3/src/external_trait_impls/serde.rs +0 -201
- data/ext/cargo-vendor/hashbrown-0.12.3/src/lib.rs +0 -150
- data/ext/cargo-vendor/hashbrown-0.12.3/src/macros.rs +0 -70
- data/ext/cargo-vendor/hashbrown-0.12.3/src/map.rs +0 -8408
- data/ext/cargo-vendor/hashbrown-0.12.3/src/raw/alloc.rs +0 -73
- data/ext/cargo-vendor/hashbrown-0.12.3/src/raw/bitmask.rs +0 -122
- data/ext/cargo-vendor/hashbrown-0.12.3/src/raw/generic.rs +0 -154
- data/ext/cargo-vendor/hashbrown-0.12.3/src/raw/mod.rs +0 -2460
- data/ext/cargo-vendor/hashbrown-0.12.3/src/raw/sse2.rs +0 -146
- data/ext/cargo-vendor/hashbrown-0.12.3/src/rustc_entry.rs +0 -630
- data/ext/cargo-vendor/hashbrown-0.12.3/src/scopeguard.rs +0 -74
- data/ext/cargo-vendor/hashbrown-0.12.3/src/set.rs +0 -2790
- data/ext/cargo-vendor/hashbrown-0.12.3/tests/hasher.rs +0 -65
- data/ext/cargo-vendor/hashbrown-0.12.3/tests/rayon.rs +0 -533
- data/ext/cargo-vendor/hashbrown-0.12.3/tests/serde.rs +0 -65
- data/ext/cargo-vendor/hashbrown-0.12.3/tests/set.rs +0 -34
- data/ext/cargo-vendor/lru-0.7.8/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/lru-0.7.8/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/lru-0.7.8/.github/workflows/main.yml +0 -54
- data/ext/cargo-vendor/lru-0.7.8/CHANGELOG.md +0 -194
- data/ext/cargo-vendor/lru-0.7.8/Cargo.toml +0 -42
- data/ext/cargo-vendor/lru-0.7.8/Cargo.toml.orig +0 -22
- data/ext/cargo-vendor/lru-0.7.8/LICENSE +0 -21
- data/ext/cargo-vendor/lru-0.7.8/README.md +0 -62
- data/ext/cargo-vendor/lru-0.7.8/src/lib.rs +0 -1872
- data/ext/cargo-vendor/version_check-0.9.5/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/version_check-0.9.5/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/version_check-0.9.5/.github/workflows/ci.yml +0 -42
- data/ext/cargo-vendor/version_check-0.9.5/.travis.yml +0 -6
- data/ext/cargo-vendor/version_check-0.9.5/Cargo.toml +0 -38
- data/ext/cargo-vendor/version_check-0.9.5/Cargo.toml.orig +0 -13
- data/ext/cargo-vendor/version_check-0.9.5/LICENSE-APACHE +0 -201
- data/ext/cargo-vendor/version_check-0.9.5/LICENSE-MIT +0 -19
- data/ext/cargo-vendor/version_check-0.9.5/README.md +0 -80
- data/ext/cargo-vendor/version_check-0.9.5/src/channel.rs +0 -195
- data/ext/cargo-vendor/version_check-0.9.5/src/date.rs +0 -203
- data/ext/cargo-vendor/version_check-0.9.5/src/lib.rs +0 -528
- data/ext/cargo-vendor/version_check-0.9.5/src/version.rs +0 -316
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/.cargo-checksum.json +0 -1
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/.cargo_vcs_info.json +0 -6
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/.github/workflows/main.yml +0 -44
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/.gitmodules +0 -3
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/CODE_OF_CONDUCT.md +0 -49
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/CONTRIBUTING.md +0 -8
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/Cargo.lock +0 -23
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/Cargo.toml +0 -59
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/Cargo.toml.orig +0 -29
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/LICENSE-APACHE +0 -201
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/LICENSE-Apache-2.0_WITH_LLVM-exception +0 -220
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/LICENSE-MIT +0 -23
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/ORG_CODE_OF_CONDUCT.md +0 -143
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/README.md +0 -94
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/SECURITY.md +0 -29
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/src/lib.rs +0 -47
- data/ext/cargo-vendor/wasi-0.11.1+wasi-snapshot-preview1/src/lib_generated.rs +0 -2366
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/.github/CODEOWNERS +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/.github/workflows/dotslash-config.json +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/.rustfmt.toml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/.rusty-hook.toml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/AGENTS.md +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/CLAUDE.md +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/README.md +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/dev/run_benchmarks_for_file.sh +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/dev/run_benchmarks_for_gv.sh +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/common_test.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/config.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/crosscheck.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/lib.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/codeowners_file_parser.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/codeowners_query.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/file_generator.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/file_owner_finder.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/annotated_file_mapper.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/directory_mapper.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/escaper.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/package_mapper.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/team_gem_mapper.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/team_glob_mapper.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper/team_yml_mapper.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/ownership/mapper.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/path_utils.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/src/tracked_files.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/cache_test.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/codeowners_path_test.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/crosscheck_owners_test.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/executable_name_config_test.rs +10 -10
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_codeowners_path/config/code_ownership.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_codeowners_path/config/teams/test_team.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_codeowners_path/docs/CODEOWNERS +3 -3
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_codeowners_path/expected/CODEOWNERS +3 -3
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_codeowners_path/ruby/app/models/test.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_executable_name/.github/CODEOWNERS +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_executable_name/app/foo.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_executable_name/config/code_ownership.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_executable_name/config/teams/foo.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_executable_name/config/teams/payments.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/custom_executable_name/ruby/app/payments/foo.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/default_executable_name/.github/CODEOWNERS +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/default_executable_name/app/bar.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/default_executable_name/config/code_ownership.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/default_executable_name/config/teams/bar.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3/tests/fixtures/multiple-directory-owners/app/services → codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team/app/by_name}/.codeowner +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3/tests/fixtures/multiple-directory-owners → codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team}/config/code_ownership.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3/tests/fixtures/multiple-directory-owners → codeowners-0.5.0/tests/fixtures/directory-codeowner-github-team}/config/teams/foo.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/.github/CODEOWNERS +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/config/code_ownership.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/config/teams/payments.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/config/teams/payroll.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/gems/payroll_calculator/calculator.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/models/bank_account.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/models/blockchain.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/models/payroll.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/payments/nacha.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/services/.codeowner +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/services/multi_owned.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/app/unowned.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/invalid_project/ruby/packages/payroll_flow/package.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/.github/CODEOWNERS +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/.keep +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/config/code_ownership.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/config/teams/design.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/config/teams/frontend.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/frontend/apps/public/index.tsx +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/frontend/packages/dashboard/package.json +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/frontend/packages/dashboard/src/index.tsx +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/frontend/packages/ui-kit/.codeowner +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/javascript_only_project/frontend/packages/ui-kit/src/button.tsx +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/missing_github_team/.github/CODEOWNERS +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/missing_github_team/config/code_ownership.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/missing_github_team/config/teams/bad_team.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/missing_github_team/config/teams/good.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/missing_github_team/gems/pets/dog.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/.github/CODEOWNERS +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/app/consumers/.codeowner +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/app/consumers/deep/nesting/nestdir/deep_file.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/app/consumers/one_owner.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/app/services/exciting/.codeowner +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/app/services/exciting/some_other_file.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/multiple-directory-owners/config/teams/bar.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/.github/CODEOWNERS +9 -9
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/.ignore +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/config/code_ownership.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/config/teams/payments.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/config/teams/payroll.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/config/teams/ux.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/gems/payroll_calculator/calculator.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/gems/pets/dog.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/PayrollFlow/index.tsx +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/PayrollFlow/package.json +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/items/(special)/.codeowner +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/items/(special)/pay.ts +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/items/.codeowner +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/items/item.ts +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/javascript/packages/list/page-admin.tsx +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/models/bank_account.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/models/payroll.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/payments/foo/.codeowner +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/payments/foo/ownedby_payroll.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/payments/nacha.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/payroll/.codeowner +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/payroll/payroll.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/views/foos/edit.erb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/views/foos/index.html.erb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/app/views/foos/new.html.erb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/ignored_files/git_ignored.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/ruby/packages/payroll_flow/package.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project/should_be_ignored/an_ignored_file.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/.github/CODEOWNERS +12 -12
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/config/code_ownership.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/config/teams/brewers.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/config/teams/cubs.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/config/teams/giants.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/config/teams/rockies.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/datepicker/package.json +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/datepicker/src/picks/dp.tsx +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/list/package.json +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/list/src/item.tsx +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/package.json +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/src/field.tsx +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/frontend/packages/components/textfield/src/fields/small.tsx +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/gems/apollo/lib/apollo.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/gems/ivy/lib/ivy.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/gems/lager/lib/lager.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/gems/summit/lib/summit.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/packs/games/app/services/stats.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/packs/games/package.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/packs/locations/app/services/capacity.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/packs/locations/package.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/packs/schedule/app/services/date.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/packs/schedule/package.yml +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/brewers/lib/util.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/brewers/services/play.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/.codeowner +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/.codeowner +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/db/price.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/models/entertainment.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/cubs/services/play.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/giants/services/play.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/fixtures/valid_project_with_overrides/ruby/app/rockies/services/play.rb +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/git_stage_test.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/invalid_project_structure_test.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/missing_github_team_test.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/multiple_directory_owners_test.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/run_config_executable_override_test.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/runner_api.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/untracked_files_test.rs +0 -0
- data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/valid_project_test.rs +6 -6
- /data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/valid_project_with_overrides_test.rs +0 -0
- /data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tests/validate_files_test.rs +0 -0
- /data/ext/cargo-vendor/{codeowners-0.3.3 → codeowners-0.5.0}/tmp/.gitkeep +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/LICENSE-APACHE.md +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/LICENSE-MIT.md +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/LICENSE.md +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/src/fmt/override.rs +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/hook__location_hook.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/report_display__doc.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/doc/report_display_alt__doc.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__alt.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__charset_ascii.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__color_mode_color.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__color_mode_emphasis.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_context.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_decr.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_for_context.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_incr.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_multiple.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__hook_provider.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__multiline.snap +0 -0
- /data/ext/cargo-vendor/{error-stack-0.5.0 → error-stack-0.8.0}/tests/snapshots/test_debug__full__norm.snap +0 -0
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
use core::{fmt, num::NonZeroU32};
|
|
2
|
-
|
|
3
|
-
/// A small and `no_std` compatible error type
|
|
4
|
-
///
|
|
5
|
-
/// The [`Error::raw_os_error()`] will indicate if the error is from the OS, and
|
|
6
|
-
/// if so, which error code the OS gave the application. If such an error is
|
|
7
|
-
/// encountered, please consult with your system documentation.
|
|
8
|
-
///
|
|
9
|
-
/// Internally this type is a NonZeroU32, with certain values reserved for
|
|
10
|
-
/// certain purposes, see [`Error::INTERNAL_START`] and [`Error::CUSTOM_START`].
|
|
11
|
-
///
|
|
12
|
-
/// *If this crate's `"std"` Cargo feature is enabled*, then:
|
|
13
|
-
/// - [`getrandom::Error`][Error] implements
|
|
14
|
-
/// [`std::error::Error`](https://doc.rust-lang.org/std/error/trait.Error.html)
|
|
15
|
-
/// - [`std::io::Error`](https://doc.rust-lang.org/std/io/struct.Error.html) implements
|
|
16
|
-
/// [`From<getrandom::Error>`](https://doc.rust-lang.org/std/convert/trait.From.html).
|
|
17
|
-
#[derive(Copy, Clone, Eq, PartialEq)]
|
|
18
|
-
pub struct Error(NonZeroU32);
|
|
19
|
-
|
|
20
|
-
const fn internal_error(n: u16) -> Error {
|
|
21
|
-
// SAFETY: code > 0 as INTERNAL_START > 0 and adding n won't overflow a u32.
|
|
22
|
-
let code = Error::INTERNAL_START + (n as u32);
|
|
23
|
-
Error(unsafe { NonZeroU32::new_unchecked(code) })
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
impl Error {
|
|
27
|
-
/// This target/platform is not supported by `getrandom`.
|
|
28
|
-
pub const UNSUPPORTED: Error = internal_error(0);
|
|
29
|
-
/// The platform-specific `errno` returned a non-positive value.
|
|
30
|
-
pub const ERRNO_NOT_POSITIVE: Error = internal_error(1);
|
|
31
|
-
/// Encountered an unexpected situation which should not happen in practice.
|
|
32
|
-
pub const UNEXPECTED: Error = internal_error(2);
|
|
33
|
-
/// Call to [`CCRandomGenerateBytes`](https://opensource.apple.com/source/CommonCrypto/CommonCrypto-60074/include/CommonRandom.h.auto.html) failed
|
|
34
|
-
/// on iOS, tvOS, or waatchOS.
|
|
35
|
-
// TODO: Update this constant name in the next breaking release.
|
|
36
|
-
pub const IOS_SEC_RANDOM: Error = internal_error(3);
|
|
37
|
-
/// Call to Windows [`RtlGenRandom`](https://docs.microsoft.com/en-us/windows/win32/api/ntsecapi/nf-ntsecapi-rtlgenrandom) failed.
|
|
38
|
-
pub const WINDOWS_RTL_GEN_RANDOM: Error = internal_error(4);
|
|
39
|
-
/// RDRAND instruction failed due to a hardware issue.
|
|
40
|
-
pub const FAILED_RDRAND: Error = internal_error(5);
|
|
41
|
-
/// RDRAND instruction unsupported on this target.
|
|
42
|
-
pub const NO_RDRAND: Error = internal_error(6);
|
|
43
|
-
/// The environment does not support the Web Crypto API.
|
|
44
|
-
pub const WEB_CRYPTO: Error = internal_error(7);
|
|
45
|
-
/// Calling Web Crypto API `crypto.getRandomValues` failed.
|
|
46
|
-
pub const WEB_GET_RANDOM_VALUES: Error = internal_error(8);
|
|
47
|
-
/// On VxWorks, call to `randSecure` failed (random number generator is not yet initialized).
|
|
48
|
-
pub const VXWORKS_RAND_SECURE: Error = internal_error(11);
|
|
49
|
-
/// Node.js does not have the `crypto` CommonJS module.
|
|
50
|
-
pub const NODE_CRYPTO: Error = internal_error(12);
|
|
51
|
-
/// Calling Node.js function `crypto.randomFillSync` failed.
|
|
52
|
-
pub const NODE_RANDOM_FILL_SYNC: Error = internal_error(13);
|
|
53
|
-
/// Called from an ES module on Node.js. This is unsupported, see:
|
|
54
|
-
/// <https://docs.rs/getrandom#nodejs-es-module-support>.
|
|
55
|
-
pub const NODE_ES_MODULE: Error = internal_error(14);
|
|
56
|
-
|
|
57
|
-
/// Codes below this point represent OS Errors (i.e. positive i32 values).
|
|
58
|
-
/// Codes at or above this point, but below [`Error::CUSTOM_START`] are
|
|
59
|
-
/// reserved for use by the `rand` and `getrandom` crates.
|
|
60
|
-
pub const INTERNAL_START: u32 = 1 << 31;
|
|
61
|
-
|
|
62
|
-
/// Codes at or above this point can be used by users to define their own
|
|
63
|
-
/// custom errors.
|
|
64
|
-
pub const CUSTOM_START: u32 = (1 << 31) + (1 << 30);
|
|
65
|
-
|
|
66
|
-
/// Extract the raw OS error code (if this error came from the OS)
|
|
67
|
-
///
|
|
68
|
-
/// This method is identical to [`std::io::Error::raw_os_error()`][1], except
|
|
69
|
-
/// that it works in `no_std` contexts. If this method returns `None`, the
|
|
70
|
-
/// error value can still be formatted via the `Display` implementation.
|
|
71
|
-
///
|
|
72
|
-
/// [1]: https://doc.rust-lang.org/std/io/struct.Error.html#method.raw_os_error
|
|
73
|
-
#[inline]
|
|
74
|
-
pub fn raw_os_error(self) -> Option<i32> {
|
|
75
|
-
if self.0.get() < Self::INTERNAL_START {
|
|
76
|
-
match () {
|
|
77
|
-
#[cfg(target_os = "solid_asp3")]
|
|
78
|
-
// On SOLID, negate the error code again to obtain the original
|
|
79
|
-
// error code.
|
|
80
|
-
() => Some(-(self.0.get() as i32)),
|
|
81
|
-
#[cfg(not(target_os = "solid_asp3"))]
|
|
82
|
-
() => Some(self.0.get() as i32),
|
|
83
|
-
}
|
|
84
|
-
} else {
|
|
85
|
-
None
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/// Extract the bare error code.
|
|
90
|
-
///
|
|
91
|
-
/// This code can either come from the underlying OS, or be a custom error.
|
|
92
|
-
/// Use [`Error::raw_os_error()`] to disambiguate.
|
|
93
|
-
#[inline]
|
|
94
|
-
pub const fn code(self) -> NonZeroU32 {
|
|
95
|
-
self.0
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
cfg_if! {
|
|
100
|
-
if #[cfg(unix)] {
|
|
101
|
-
fn os_err(errno: i32, buf: &mut [u8]) -> Option<&str> {
|
|
102
|
-
let buf_ptr = buf.as_mut_ptr() as *mut libc::c_char;
|
|
103
|
-
if unsafe { libc::strerror_r(errno, buf_ptr, buf.len()) } != 0 {
|
|
104
|
-
return None;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// Take up to trailing null byte
|
|
108
|
-
let n = buf.len();
|
|
109
|
-
let idx = buf.iter().position(|&b| b == 0).unwrap_or(n);
|
|
110
|
-
core::str::from_utf8(&buf[..idx]).ok()
|
|
111
|
-
}
|
|
112
|
-
} else {
|
|
113
|
-
fn os_err(_errno: i32, _buf: &mut [u8]) -> Option<&str> {
|
|
114
|
-
None
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
impl fmt::Debug for Error {
|
|
120
|
-
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
121
|
-
let mut dbg = f.debug_struct("Error");
|
|
122
|
-
if let Some(errno) = self.raw_os_error() {
|
|
123
|
-
dbg.field("os_error", &errno);
|
|
124
|
-
let mut buf = [0u8; 128];
|
|
125
|
-
if let Some(err) = os_err(errno, &mut buf) {
|
|
126
|
-
dbg.field("description", &err);
|
|
127
|
-
}
|
|
128
|
-
} else if let Some(desc) = internal_desc(*self) {
|
|
129
|
-
dbg.field("internal_code", &self.0.get());
|
|
130
|
-
dbg.field("description", &desc);
|
|
131
|
-
} else {
|
|
132
|
-
dbg.field("unknown_code", &self.0.get());
|
|
133
|
-
}
|
|
134
|
-
dbg.finish()
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
impl fmt::Display for Error {
|
|
139
|
-
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
140
|
-
if let Some(errno) = self.raw_os_error() {
|
|
141
|
-
let mut buf = [0u8; 128];
|
|
142
|
-
match os_err(errno, &mut buf) {
|
|
143
|
-
Some(err) => err.fmt(f),
|
|
144
|
-
None => write!(f, "OS Error: {}", errno),
|
|
145
|
-
}
|
|
146
|
-
} else if let Some(desc) = internal_desc(*self) {
|
|
147
|
-
f.write_str(desc)
|
|
148
|
-
} else {
|
|
149
|
-
write!(f, "Unknown Error: {}", self.0.get())
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
impl From<NonZeroU32> for Error {
|
|
155
|
-
fn from(code: NonZeroU32) -> Self {
|
|
156
|
-
Self(code)
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
fn internal_desc(error: Error) -> Option<&'static str> {
|
|
161
|
-
match error {
|
|
162
|
-
Error::UNSUPPORTED => Some("getrandom: this target is not supported"),
|
|
163
|
-
Error::ERRNO_NOT_POSITIVE => Some("errno: did not return a positive value"),
|
|
164
|
-
Error::UNEXPECTED => Some("unexpected situation"),
|
|
165
|
-
Error::IOS_SEC_RANDOM => Some("SecRandomCopyBytes: iOS Security framework failure"),
|
|
166
|
-
Error::WINDOWS_RTL_GEN_RANDOM => Some("RtlGenRandom: Windows system function failure"),
|
|
167
|
-
Error::FAILED_RDRAND => Some("RDRAND: failed multiple times: CPU issue likely"),
|
|
168
|
-
Error::NO_RDRAND => Some("RDRAND: instruction not supported"),
|
|
169
|
-
Error::WEB_CRYPTO => Some("Web Crypto API is unavailable"),
|
|
170
|
-
Error::WEB_GET_RANDOM_VALUES => Some("Calling Web API crypto.getRandomValues failed"),
|
|
171
|
-
Error::VXWORKS_RAND_SECURE => Some("randSecure: VxWorks RNG module is not initialized"),
|
|
172
|
-
Error::NODE_CRYPTO => Some("Node.js crypto CommonJS module is unavailable"),
|
|
173
|
-
Error::NODE_RANDOM_FILL_SYNC => Some("Calling Node.js API crypto.randomFillSync failed"),
|
|
174
|
-
Error::NODE_ES_MODULE => Some("Node.js ES modules are not directly supported, see https://docs.rs/getrandom#nodejs-es-module-support"),
|
|
175
|
-
_ => None,
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
#[cfg(test)]
|
|
180
|
-
mod tests {
|
|
181
|
-
use super::Error;
|
|
182
|
-
use core::mem::size_of;
|
|
183
|
-
|
|
184
|
-
#[test]
|
|
185
|
-
fn test_size() {
|
|
186
|
-
assert_eq!(size_of::<Error>(), 4);
|
|
187
|
-
assert_eq!(size_of::<Result<(), Error>>(), 4);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
extern crate std;
|
|
2
|
-
|
|
3
|
-
use crate::Error;
|
|
4
|
-
use std::io;
|
|
5
|
-
|
|
6
|
-
impl From<Error> for io::Error {
|
|
7
|
-
fn from(err: Error) -> Self {
|
|
8
|
-
match err.raw_os_error() {
|
|
9
|
-
Some(errno) => io::Error::from_raw_os_error(errno),
|
|
10
|
-
None => io::Error::new(io::ErrorKind::Other, err),
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
impl std::error::Error for Error {}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
//! Implementation for ESP-IDF
|
|
2
|
-
use crate::Error;
|
|
3
|
-
use core::{ffi::c_void, mem::MaybeUninit};
|
|
4
|
-
|
|
5
|
-
extern "C" {
|
|
6
|
-
fn esp_fill_random(buf: *mut c_void, len: usize) -> u32;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
pub fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
|
|
10
|
-
// Not that NOT enabling WiFi, BT, or the voltage noise entropy source (via `bootloader_random_enable`)
|
|
11
|
-
// will cause ESP-IDF to return pseudo-random numbers based on the voltage noise entropy, after the initial boot process:
|
|
12
|
-
// https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/random.html
|
|
13
|
-
//
|
|
14
|
-
// However tracking if some of these entropy sources is enabled is way too difficult to implement here
|
|
15
|
-
unsafe { esp_fill_random(dest.as_mut_ptr().cast(), dest.len()) };
|
|
16
|
-
|
|
17
|
-
Ok(())
|
|
18
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
//! Implementation for Fuchsia Zircon
|
|
2
|
-
use crate::Error;
|
|
3
|
-
use core::mem::MaybeUninit;
|
|
4
|
-
|
|
5
|
-
#[link(name = "zircon")]
|
|
6
|
-
extern "C" {
|
|
7
|
-
fn zx_cprng_draw(buffer: *mut u8, length: usize);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
pub fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
|
|
11
|
-
unsafe { zx_cprng_draw(dest.as_mut_ptr() as *mut u8, dest.len()) }
|
|
12
|
-
Ok(())
|
|
13
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
//! Implementation using getentropy(2)
|
|
2
|
-
//!
|
|
3
|
-
//! Available since:
|
|
4
|
-
//! - macOS 10.12
|
|
5
|
-
//! - OpenBSD 5.6
|
|
6
|
-
//! - Emscripten 2.0.5
|
|
7
|
-
//! - vita newlib since Dec 2021
|
|
8
|
-
//!
|
|
9
|
-
//! For these targets, we use getentropy(2) because getrandom(2) doesn't exist.
|
|
10
|
-
use crate::{util_libc::last_os_error, Error};
|
|
11
|
-
use core::mem::MaybeUninit;
|
|
12
|
-
|
|
13
|
-
pub fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
|
|
14
|
-
for chunk in dest.chunks_mut(256) {
|
|
15
|
-
let ret = unsafe { libc::getentropy(chunk.as_mut_ptr() as *mut libc::c_void, chunk.len()) };
|
|
16
|
-
if ret != 0 {
|
|
17
|
-
return Err(last_os_error());
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
Ok(())
|
|
21
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
//! Implementation using getrandom(2).
|
|
2
|
-
//!
|
|
3
|
-
//! Available since:
|
|
4
|
-
//! - Linux Kernel 3.17, Glibc 2.25, Musl 1.1.20
|
|
5
|
-
//! - Android API level 23 (Marshmallow)
|
|
6
|
-
//! - NetBSD 10.0
|
|
7
|
-
//! - FreeBSD 12.0
|
|
8
|
-
//! - illumos since Dec 2018
|
|
9
|
-
//! - DragonFly 5.7
|
|
10
|
-
//! - Hurd Glibc 2.31
|
|
11
|
-
//! - shim-3ds since Feb 2022
|
|
12
|
-
//!
|
|
13
|
-
//! For these platforms, we always use the default pool and never set the
|
|
14
|
-
//! GRND_RANDOM flag to use the /dev/random pool. On Linux/Android/Hurd, using
|
|
15
|
-
//! GRND_RANDOM is not recommended. On NetBSD/FreeBSD/Dragonfly/3ds, it does
|
|
16
|
-
//! nothing. On illumos, the default pool is used to implement getentropy(2),
|
|
17
|
-
//! so we assume it is acceptable here.
|
|
18
|
-
use crate::{util_libc::sys_fill_exact, Error};
|
|
19
|
-
use core::mem::MaybeUninit;
|
|
20
|
-
|
|
21
|
-
pub fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
|
|
22
|
-
sys_fill_exact(dest, |buf| unsafe {
|
|
23
|
-
libc::getrandom(buf.as_mut_ptr() as *mut libc::c_void, buf.len(), 0)
|
|
24
|
-
})
|
|
25
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
//! Implementation for Hermit
|
|
2
|
-
use crate::Error;
|
|
3
|
-
use core::{mem::MaybeUninit, num::NonZeroU32};
|
|
4
|
-
|
|
5
|
-
/// Minimum return value which we should get from syscalls in practice,
|
|
6
|
-
/// because Hermit uses positive `i32`s for error codes:
|
|
7
|
-
/// https://github.com/hermitcore/libhermit-rs/blob/main/src/errno.rs
|
|
8
|
-
const MIN_RET_CODE: isize = -(i32::MAX as isize);
|
|
9
|
-
|
|
10
|
-
extern "C" {
|
|
11
|
-
fn sys_read_entropy(buffer: *mut u8, length: usize, flags: u32) -> isize;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
pub fn getrandom_inner(mut dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
|
|
15
|
-
while !dest.is_empty() {
|
|
16
|
-
let res = unsafe { sys_read_entropy(dest.as_mut_ptr() as *mut u8, dest.len(), 0) };
|
|
17
|
-
// Positive `isize`s can be safely casted to `usize`
|
|
18
|
-
if res > 0 && (res as usize) <= dest.len() {
|
|
19
|
-
dest = &mut dest[res as usize..];
|
|
20
|
-
} else {
|
|
21
|
-
let err = match res {
|
|
22
|
-
MIN_RET_CODE..=-1 => NonZeroU32::new(-res as u32).unwrap().into(),
|
|
23
|
-
_ => Error::UNEXPECTED,
|
|
24
|
-
};
|
|
25
|
-
return Err(err);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
Ok(())
|
|
29
|
-
}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
//! Implementation for WASM based on Web and Node.js
|
|
2
|
-
use crate::Error;
|
|
3
|
-
|
|
4
|
-
extern crate std;
|
|
5
|
-
use std::{mem::MaybeUninit, thread_local};
|
|
6
|
-
|
|
7
|
-
use js_sys::{global, Function, Uint8Array};
|
|
8
|
-
use wasm_bindgen::{prelude::wasm_bindgen, JsCast, JsValue};
|
|
9
|
-
|
|
10
|
-
// Size of our temporary Uint8Array buffer used with WebCrypto methods
|
|
11
|
-
// Maximum is 65536 bytes see https://developer.mozilla.org/en-US/docs/Web/API/Crypto/getRandomValues
|
|
12
|
-
const WEB_CRYPTO_BUFFER_SIZE: usize = 256;
|
|
13
|
-
// Node.js's crypto.randomFillSync requires the size to be less than 2**31.
|
|
14
|
-
const NODE_MAX_BUFFER_SIZE: usize = (1 << 31) - 1;
|
|
15
|
-
|
|
16
|
-
enum RngSource {
|
|
17
|
-
Node(NodeCrypto),
|
|
18
|
-
Web(WebCrypto, Uint8Array),
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// JsValues are always per-thread, so we initialize RngSource for each thread.
|
|
22
|
-
// See: https://github.com/rustwasm/wasm-bindgen/pull/955
|
|
23
|
-
thread_local!(
|
|
24
|
-
static RNG_SOURCE: Result<RngSource, Error> = getrandom_init();
|
|
25
|
-
);
|
|
26
|
-
|
|
27
|
-
pub(crate) fn getrandom_inner(dest: &mut [MaybeUninit<u8>]) -> Result<(), Error> {
|
|
28
|
-
RNG_SOURCE.with(|result| {
|
|
29
|
-
let source = result.as_ref().map_err(|&e| e)?;
|
|
30
|
-
|
|
31
|
-
match source {
|
|
32
|
-
RngSource::Node(n) => {
|
|
33
|
-
for chunk in dest.chunks_mut(NODE_MAX_BUFFER_SIZE) {
|
|
34
|
-
// SAFETY: chunk is never used directly, the memory is only
|
|
35
|
-
// modified via the Uint8Array view, which is passed
|
|
36
|
-
// directly to JavaScript. Also, crypto.randomFillSync does
|
|
37
|
-
// not resize the buffer. We know the length is less than
|
|
38
|
-
// u32::MAX because of the chunking above.
|
|
39
|
-
// Note that this uses the fact that JavaScript doesn't
|
|
40
|
-
// have a notion of "uninitialized memory", this is purely
|
|
41
|
-
// a Rust/C/C++ concept.
|
|
42
|
-
let res = n.random_fill_sync(unsafe {
|
|
43
|
-
Uint8Array::view_mut_raw(chunk.as_mut_ptr() as *mut u8, chunk.len())
|
|
44
|
-
});
|
|
45
|
-
if res.is_err() {
|
|
46
|
-
return Err(Error::NODE_RANDOM_FILL_SYNC);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
RngSource::Web(crypto, buf) => {
|
|
51
|
-
// getRandomValues does not work with all types of WASM memory,
|
|
52
|
-
// so we initially write to browser memory to avoid exceptions.
|
|
53
|
-
for chunk in dest.chunks_mut(WEB_CRYPTO_BUFFER_SIZE) {
|
|
54
|
-
// The chunk can be smaller than buf's length, so we call to
|
|
55
|
-
// JS to create a smaller view of buf without allocation.
|
|
56
|
-
let sub_buf = buf.subarray(0, chunk.len() as u32);
|
|
57
|
-
|
|
58
|
-
if crypto.get_random_values(&sub_buf).is_err() {
|
|
59
|
-
return Err(Error::WEB_GET_RANDOM_VALUES);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
// SAFETY: `sub_buf`'s length is the same length as `chunk`
|
|
63
|
-
unsafe { sub_buf.raw_copy_to_ptr(chunk.as_mut_ptr() as *mut u8) };
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
Ok(())
|
|
68
|
-
})
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
fn getrandom_init() -> Result<RngSource, Error> {
|
|
72
|
-
let global: Global = global().unchecked_into();
|
|
73
|
-
|
|
74
|
-
// Get the Web Crypto interface if we are in a browser, Web Worker, Deno,
|
|
75
|
-
// or another environment that supports the Web Cryptography API. This
|
|
76
|
-
// also allows for user-provided polyfills in unsupported environments.
|
|
77
|
-
let crypto = match global.crypto() {
|
|
78
|
-
// Standard Web Crypto interface
|
|
79
|
-
c if c.is_object() => c,
|
|
80
|
-
// Node.js CommonJS Crypto module
|
|
81
|
-
_ if is_node(&global) => {
|
|
82
|
-
// If module.require isn't a valid function, we are in an ES module.
|
|
83
|
-
match Module::require_fn().and_then(JsCast::dyn_into::<Function>) {
|
|
84
|
-
Ok(require_fn) => match require_fn.call1(&global, &JsValue::from_str("crypto")) {
|
|
85
|
-
Ok(n) => return Ok(RngSource::Node(n.unchecked_into())),
|
|
86
|
-
Err(_) => return Err(Error::NODE_CRYPTO),
|
|
87
|
-
},
|
|
88
|
-
Err(_) => return Err(Error::NODE_ES_MODULE),
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
// IE 11 Workaround
|
|
92
|
-
_ => match global.ms_crypto() {
|
|
93
|
-
c if c.is_object() => c,
|
|
94
|
-
_ => return Err(Error::WEB_CRYPTO),
|
|
95
|
-
},
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
let buf = Uint8Array::new_with_length(WEB_CRYPTO_BUFFER_SIZE as u32);
|
|
99
|
-
Ok(RngSource::Web(crypto, buf))
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// Taken from https://www.npmjs.com/package/browser-or-node
|
|
103
|
-
fn is_node(global: &Global) -> bool {
|
|
104
|
-
let process = global.process();
|
|
105
|
-
if process.is_object() {
|
|
106
|
-
let versions = process.versions();
|
|
107
|
-
if versions.is_object() {
|
|
108
|
-
return versions.node().is_string();
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
false
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
#[wasm_bindgen]
|
|
115
|
-
extern "C" {
|
|
116
|
-
// Return type of js_sys::global()
|
|
117
|
-
type Global;
|
|
118
|
-
|
|
119
|
-
// Web Crypto API: Crypto interface (https://www.w3.org/TR/WebCryptoAPI/)
|
|
120
|
-
type WebCrypto;
|
|
121
|
-
// Getters for the WebCrypto API
|
|
122
|
-
#[wasm_bindgen(method, getter)]
|
|
123
|
-
fn crypto(this: &Global) -> WebCrypto;
|
|
124
|
-
#[wasm_bindgen(method, getter, js_name = msCrypto)]
|
|
125
|
-
fn ms_crypto(this: &Global) -> WebCrypto;
|
|
126
|
-
// Crypto.getRandomValues()
|
|
127
|
-
#[wasm_bindgen(method, js_name = getRandomValues, catch)]
|
|
128
|
-
fn get_random_values(this: &WebCrypto, buf: &Uint8Array) -> Result<(), JsValue>;
|
|
129
|
-
|
|
130
|
-
// Node JS crypto module (https://nodejs.org/api/crypto.html)
|
|
131
|
-
type NodeCrypto;
|
|
132
|
-
// crypto.randomFillSync()
|
|
133
|
-
#[wasm_bindgen(method, js_name = randomFillSync, catch)]
|
|
134
|
-
fn random_fill_sync(this: &NodeCrypto, buf: Uint8Array) -> Result<(), JsValue>;
|
|
135
|
-
|
|
136
|
-
// Ideally, we would just use `fn require(s: &str)` here. However, doing
|
|
137
|
-
// this causes a Webpack warning. So we instead return the function itself
|
|
138
|
-
// and manually invoke it using call1. This also lets us to check that the
|
|
139
|
-
// function actually exists, allowing for better error messages. See:
|
|
140
|
-
// https://github.com/rust-random/getrandom/issues/224
|
|
141
|
-
// https://github.com/rust-random/getrandom/issues/256
|
|
142
|
-
type Module;
|
|
143
|
-
#[wasm_bindgen(getter, static_method_of = Module, js_class = module, js_name = require, catch)]
|
|
144
|
-
fn require_fn() -> Result<JsValue, JsValue>;
|
|
145
|
-
|
|
146
|
-
// Node JS process Object (https://nodejs.org/api/process.html)
|
|
147
|
-
#[wasm_bindgen(method, getter)]
|
|
148
|
-
fn process(this: &Global) -> Process;
|
|
149
|
-
type Process;
|
|
150
|
-
#[wasm_bindgen(method, getter)]
|
|
151
|
-
fn versions(this: &Process) -> Versions;
|
|
152
|
-
type Versions;
|
|
153
|
-
#[wasm_bindgen(method, getter)]
|
|
154
|
-
fn node(this: &Versions) -> JsValue;
|
|
155
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
use core::sync::atomic::{AtomicUsize, Ordering::Relaxed};
|
|
2
|
-
|
|
3
|
-
// This structure represents a lazily initialized static usize value. Useful
|
|
4
|
-
// when it is preferable to just rerun initialization instead of locking.
|
|
5
|
-
// unsync_init will invoke an init() function until it succeeds, then return the
|
|
6
|
-
// cached value for future calls.
|
|
7
|
-
//
|
|
8
|
-
// unsync_init supports init() "failing". If the init() method returns UNINIT,
|
|
9
|
-
// that value will be returned as normal, but will not be cached.
|
|
10
|
-
//
|
|
11
|
-
// Users should only depend on the _value_ returned by init() functions.
|
|
12
|
-
// Specifically, for the following init() function:
|
|
13
|
-
// fn init() -> usize {
|
|
14
|
-
// a();
|
|
15
|
-
// let v = b();
|
|
16
|
-
// c();
|
|
17
|
-
// v
|
|
18
|
-
// }
|
|
19
|
-
// the effects of c() or writes to shared memory will not necessarily be
|
|
20
|
-
// observed and additional synchronization methods may be needed.
|
|
21
|
-
pub(crate) struct LazyUsize(AtomicUsize);
|
|
22
|
-
|
|
23
|
-
impl LazyUsize {
|
|
24
|
-
pub const fn new() -> Self {
|
|
25
|
-
Self(AtomicUsize::new(Self::UNINIT))
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// The initialization is not completed.
|
|
29
|
-
pub const UNINIT: usize = usize::max_value();
|
|
30
|
-
|
|
31
|
-
// Runs the init() function at most once, returning the value of some run of
|
|
32
|
-
// init(). Multiple callers can run their init() functions in parallel.
|
|
33
|
-
// init() should always return the same value, if it succeeds.
|
|
34
|
-
pub fn unsync_init(&self, init: impl FnOnce() -> usize) -> usize {
|
|
35
|
-
// Relaxed ordering is fine, as we only have a single atomic variable.
|
|
36
|
-
let mut val = self.0.load(Relaxed);
|
|
37
|
-
if val == Self::UNINIT {
|
|
38
|
-
val = init();
|
|
39
|
-
self.0.store(val, Relaxed);
|
|
40
|
-
}
|
|
41
|
-
val
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// Identical to LazyUsize except with bool instead of usize.
|
|
46
|
-
pub(crate) struct LazyBool(LazyUsize);
|
|
47
|
-
|
|
48
|
-
impl LazyBool {
|
|
49
|
-
pub const fn new() -> Self {
|
|
50
|
-
Self(LazyUsize::new())
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
pub fn unsync_init(&self, init: impl FnOnce() -> bool) -> bool {
|
|
54
|
-
self.0.unsync_init(|| init() as usize) != 0
|
|
55
|
-
}
|
|
56
|
-
}
|