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
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
//!
|
|
3
3
|
//! [][crates.io]
|
|
4
4
|
//! [][libs.rs]
|
|
5
|
-
//! [][discord]
|
|
5
|
+
//! [][rust-version]
|
|
7
6
|
//!
|
|
8
7
|
//! [crates.io]: https://crates.io/crates/error-stack
|
|
9
8
|
//! [libs.rs]: https://lib.rs/crates/error-stack
|
|
10
9
|
//! [rust-version]: https://www.rust-lang.org
|
|
11
|
-
//! [discord]: https://hash.ai/discord?utm_medium=organic&utm_source=github_readme_hash-repo_error-stack
|
|
12
10
|
//!
|
|
13
11
|
//! # Overview
|
|
14
12
|
//!
|
|
@@ -18,10 +16,10 @@
|
|
|
18
16
|
//! 1. Contexts
|
|
19
17
|
//! 2. Attachments
|
|
20
18
|
//!
|
|
21
|
-
//! A
|
|
22
|
-
//!
|
|
23
|
-
//!
|
|
24
|
-
//!
|
|
19
|
+
//! A context is a view of the world, it helps describe how the current section of code interprets
|
|
20
|
+
//! the error. This is used to capture how various scopes require differing levels of detail and
|
|
21
|
+
//! understanding of the error as it propagates. A [`Report`] always captures the _current context_
|
|
22
|
+
//! in its generic argument.
|
|
25
23
|
//!
|
|
26
24
|
//! As the [`Report`] is built, various pieces of supporting information can be _attached_. These
|
|
27
25
|
//! can be anything that can be shared between threads whether it be a supporting message or a
|
|
@@ -33,7 +31,7 @@
|
|
|
33
31
|
//!
|
|
34
32
|
//! ```rust
|
|
35
33
|
//! # #![allow(dead_code)]
|
|
36
|
-
//! use error_stack::ResultExt;
|
|
34
|
+
//! use error_stack::{Report, ResultExt};
|
|
37
35
|
//! // using `thiserror` is not neccessary, but convenient
|
|
38
36
|
//! use thiserror::Error;
|
|
39
37
|
//!
|
|
@@ -47,14 +45,14 @@
|
|
|
47
45
|
//! Trivial,
|
|
48
46
|
//! }
|
|
49
47
|
//!
|
|
50
|
-
//! type AppResult<T> =
|
|
48
|
+
//! type AppResult<T> = Result<T, Report<AppError>>;
|
|
51
49
|
//!
|
|
52
50
|
//! // Errors can also be a plain `struct`, somewhat like in `anyhow`.
|
|
53
51
|
//! #[derive(Error, Debug)]
|
|
54
52
|
//! #[error("logic error")]
|
|
55
53
|
//! struct LogicError;
|
|
56
54
|
//!
|
|
57
|
-
//! type LogicResult<T> =
|
|
55
|
+
//! type LogicResult<T> = Result<T, Report<LogicError>>;
|
|
58
56
|
//!
|
|
59
57
|
//! fn do_logic() -> LogicResult<()> {
|
|
60
58
|
//! Ok(())
|
|
@@ -73,9 +71,7 @@
|
|
|
73
71
|
//!
|
|
74
72
|
//! ## Where to use a Report
|
|
75
73
|
//!
|
|
76
|
-
//! [`Report`] has been designed to be used as the [`Err`] variant of a `Result
|
|
77
|
-
//! provides a [`Result<E, C>`] type alias for convenience which uses [`Report<C>`] as the [`Err`]
|
|
78
|
-
//! variant and can be used as a return type:
|
|
74
|
+
//! [`Report`] has been designed to be used as the [`Err`] variant of a [`Result`]:
|
|
79
75
|
//!
|
|
80
76
|
//! ```rust
|
|
81
77
|
//! # fn has_permission(_: (), _: ()) -> bool { true }
|
|
@@ -85,10 +81,10 @@
|
|
|
85
81
|
//! # impl core::fmt::Display for AccessError {
|
|
86
82
|
//! # fn fmt(&self, _: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { Ok(()) }
|
|
87
83
|
//! # }
|
|
88
|
-
//! # impl
|
|
89
|
-
//! use error_stack::{ensure,
|
|
84
|
+
//! # impl core::error::Error for AccessError {}
|
|
85
|
+
//! use error_stack::{ensure, Report};
|
|
90
86
|
//!
|
|
91
|
-
//! fn main() -> Result<(), AccessError
|
|
87
|
+
//! fn main() -> Result<(), Report<AccessError>> {
|
|
92
88
|
//! let user = get_user()?;
|
|
93
89
|
//! let resource = get_resource()?;
|
|
94
90
|
//!
|
|
@@ -105,10 +101,9 @@
|
|
|
105
101
|
//!
|
|
106
102
|
//! ### Initializing a Report
|
|
107
103
|
//!
|
|
108
|
-
//! A [`Report`] can be created directly from anything that implements [`
|
|
109
|
-
//! [`Report::new()`] or through any of the provided macros
|
|
110
|
-
//!
|
|
111
|
-
//! existing [`Error`]:
|
|
104
|
+
//! A [`Report`] can be created directly from anything that implements [`Error`] by using
|
|
105
|
+
//! [`Report::new()`], [`IntoReport::into_report()`], or through any of the provided macros
|
|
106
|
+
//! ([`bail!`], [`ensure!`]).
|
|
112
107
|
//!
|
|
113
108
|
//! ```rust
|
|
114
109
|
//! use std::{fs, io, path::Path};
|
|
@@ -135,18 +130,20 @@
|
|
|
135
130
|
//! ### Changing Context
|
|
136
131
|
//!
|
|
137
132
|
//! The generic parameter in [`Report`] is called the _current context_. When creating a new
|
|
138
|
-
//! [`Report`], the [`
|
|
133
|
+
//! [`Report`], the [`Error`] that's provided will be set as the current context. The current
|
|
139
134
|
//! context should encapsulate how the current code interprets the error. As the error propagates,
|
|
140
135
|
//! it will cross boundaries where new information is available, and the previous level of detail is
|
|
141
136
|
//! no longer applicable. These boundaries will often occur when crossing between major modules, or
|
|
142
137
|
//! when execution crosses between crates. At this point the [`Report`] should start to operate in a
|
|
143
138
|
//! new context. To change the context, [`Report::change_context()`] is used:
|
|
144
139
|
//!
|
|
145
|
-
//! (Again, for convenience, using [`ResultExt`] will do that on the [`Err`] variant)
|
|
140
|
+
//! (Again, for convenience, using [`ResultExt`] will do that on the [`Err`] variant.)
|
|
146
141
|
//!
|
|
147
142
|
//! ```rust
|
|
148
143
|
//! # use std::{fmt, fs, io, path::Path};
|
|
149
|
-
//! use
|
|
144
|
+
//! use core::error::Error;
|
|
145
|
+
//!
|
|
146
|
+
//! use error_stack::{Report, ResultExt};
|
|
150
147
|
//! # pub type Config = String;
|
|
151
148
|
//!
|
|
152
149
|
//! #[derive(Debug)]
|
|
@@ -159,10 +156,10 @@
|
|
|
159
156
|
//! }
|
|
160
157
|
//!
|
|
161
158
|
//! // It's also possible to implement `Error` instead.
|
|
162
|
-
//! impl
|
|
159
|
+
//! impl Error for ParseConfigError {}
|
|
163
160
|
//!
|
|
164
161
|
//! // For clarification, this example is not using `error_stack::Result`.
|
|
165
|
-
//! fn parse_config(path: impl AsRef<Path>) -> Result<Config, ParseConfigError
|
|
162
|
+
//! fn parse_config(path: impl AsRef<Path>) -> Result<Config, Report<ParseConfigError>> {
|
|
166
163
|
//! let content = fs::read_to_string(path.as_ref())
|
|
167
164
|
//! .change_context(ParseConfigError)?;
|
|
168
165
|
//!
|
|
@@ -180,13 +177,13 @@
|
|
|
180
177
|
//! Module/crate boundaries are not the only places where information can be embedded within the
|
|
181
178
|
//! [`Report`] however. Additional information can be attached within the current context, whether
|
|
182
179
|
//! this be a string, or any thread-safe object. These attachments are added by using
|
|
183
|
-
//! [`Report::
|
|
180
|
+
//! [`Report::attach_opaque()`] and [`Report::attach()`]:
|
|
184
181
|
//!
|
|
185
182
|
//! ```rust
|
|
186
183
|
//! # // we only test the snapshot on nightly, therefore report is unused (so is render)
|
|
187
184
|
//! # #![cfg_attr(not(nightly), allow(dead_code, unused_variables, unused_imports))]
|
|
188
185
|
//! # use std::{fs, path::Path};
|
|
189
|
-
//! # use error_stack::{
|
|
186
|
+
//! # use error_stack::{Report, ResultExt};
|
|
190
187
|
//! # pub type Config = String;
|
|
191
188
|
//! # #[derive(Debug)] struct ParseConfigError;
|
|
192
189
|
//! # impl ParseConfigError { pub fn new() -> Self { Self } }
|
|
@@ -195,7 +192,7 @@
|
|
|
195
192
|
//! # fmt.write_str("could not parse configuration file")
|
|
196
193
|
//! # }
|
|
197
194
|
//! # }
|
|
198
|
-
//! # impl
|
|
195
|
+
//! # impl core::error::Error for ParseConfigError {}
|
|
199
196
|
//! # #[derive(Debug, PartialEq)]
|
|
200
197
|
//! struct Suggestion(&'static str);
|
|
201
198
|
//!
|
|
@@ -204,8 +201,8 @@
|
|
|
204
201
|
//!
|
|
205
202
|
//! let content = fs::read_to_string(path)
|
|
206
203
|
//! .change_context(ParseConfigError::new())
|
|
207
|
-
//! .
|
|
208
|
-
//! .
|
|
204
|
+
//! .attach_opaque(Suggestion("use a file you can read next time!"))
|
|
205
|
+
//! .attach_with(|| format!("could not read file {path:?}"))?;
|
|
209
206
|
//!
|
|
210
207
|
//! Ok(content)
|
|
211
208
|
//! }
|
|
@@ -234,42 +231,54 @@
|
|
|
234
231
|
//! ```
|
|
235
232
|
//!
|
|
236
233
|
//! As seen above, there are ways on attaching more information to the [`Report`]: [`attach`] and
|
|
237
|
-
//! [`
|
|
234
|
+
//! [`attach_opaque`]. These two functions behave similar, but the former has a more restrictive
|
|
238
235
|
//! bound on the attachment: [`Display`] and [`Debug`]. Depending on the function used, printing the
|
|
239
236
|
//! [`Report`] will also use the [`Display`] and [`Debug`] traits to describe the attachment.
|
|
240
237
|
//!
|
|
241
238
|
//! This outputs something like:
|
|
242
239
|
//!
|
|
243
240
|
//! <pre>
|
|
244
|
-
#![doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/tests/snapshots/doc/lib__suggestion.snap"))]
|
|
241
|
+
#![cfg_attr(doc, doc = include_str!(concat!(env!("CARGO_MANIFEST_DIR"), "/tests/snapshots/doc/lib__suggestion.snap")))]
|
|
245
242
|
//! </pre>
|
|
246
243
|
//!
|
|
247
244
|
//! The `Suggestion` which was added via [`attach`] is not shown directly and only increases the
|
|
248
|
-
//! counter of opaque attachments for the containing [`
|
|
249
|
-
//! [`
|
|
245
|
+
//! counter of opaque attachments for the containing [`Error`]. The message which was passed to
|
|
246
|
+
//! [`attach_opaque`], however, is displayed in full. To be able to show attachments that have
|
|
250
247
|
//! been added via [`attach`], one must make use of [hooks](#debug-and-display-hooks) instead.
|
|
251
248
|
//!
|
|
252
|
-
//! [`
|
|
249
|
+
//! [`attach_opaque`]: Report::attach_opaque
|
|
253
250
|
//! [`Display`]: core::fmt::Display
|
|
254
251
|
//! [`Debug`]: core::fmt::Debug
|
|
255
252
|
//!
|
|
256
253
|
//! ### Multiple Errors
|
|
257
254
|
//!
|
|
258
|
-
//! [`Report`]
|
|
259
|
-
//! in
|
|
260
|
-
//!
|
|
261
|
-
//! [`
|
|
255
|
+
//! [`Report`] provides native support for combining and propagating multiple errors. This feature
|
|
256
|
+
//! is particularly useful in scenarios such as parallel processing, where multiple errors might
|
|
257
|
+
//! occur independently. In these cases, you can utilize the [`Extend`] trait implementation and the
|
|
258
|
+
//! [`push()`] method to aggregate and propagate all encountered errors, rather than just a single
|
|
259
|
+
//! one.
|
|
260
|
+
//!
|
|
261
|
+
//! error-stack is designed to be explicit about the presence of single or multiple current
|
|
262
|
+
//! contexts. This distinction is reflected in the generic type parameter:
|
|
263
|
+
//!
|
|
264
|
+
//! - [`Report<C>`] indicates that a single current context is present.
|
|
265
|
+
//! - [`Report<[C]>`](Report) signifies that at least one current context is present, with the
|
|
266
|
+
//! possibility of multiple contexts.
|
|
262
267
|
//!
|
|
263
|
-
//! [`
|
|
268
|
+
//! You can seamlessly convert between these representations using [`Report::expand`] to transform
|
|
269
|
+
//! a single-context report into a multi-context one. Using [`Report::change_context`] will
|
|
270
|
+
//! transform a [`Report<[C]>`](Report) to a [`Report<C2>`], where `C2` is a new context type.
|
|
271
|
+
//!
|
|
272
|
+
//! [`push()`]: Report::push
|
|
264
273
|
//!
|
|
265
274
|
//! ```rust
|
|
266
275
|
//! # use std::{fs, path::Path};
|
|
267
276
|
//! # use error_stack::Report;
|
|
268
277
|
//! # pub type Config = String;
|
|
269
278
|
//!
|
|
270
|
-
//! fn parse_configs(paths: &[impl AsRef<Path>]) -> Result<Vec<Config>, Report<std::io::Error>> {
|
|
279
|
+
//! fn parse_configs(paths: &[impl AsRef<Path>]) -> Result<Vec<Config>, Report<[std::io::Error]>> {
|
|
271
280
|
//! let mut configs = Vec::new();
|
|
272
|
-
//! let mut error: Option<Report<std::io::Error>> = None;
|
|
281
|
+
//! let mut error: Option<Report<[std::io::Error]>> = None;
|
|
273
282
|
//!
|
|
274
283
|
//! for path in paths {
|
|
275
284
|
//! let path = path.as_ref();
|
|
@@ -280,9 +289,9 @@
|
|
|
280
289
|
//! }
|
|
281
290
|
//! Err(err) => {
|
|
282
291
|
//! if let Some(error) = error.as_mut() {
|
|
283
|
-
//! error.
|
|
292
|
+
//! error.push(Report::from(err));
|
|
284
293
|
//! } else {
|
|
285
|
-
//! error = Some(err.
|
|
294
|
+
//! error = Some(Report::from(err).expand());
|
|
286
295
|
//! }
|
|
287
296
|
//! }
|
|
288
297
|
//! }
|
|
@@ -313,9 +322,9 @@
|
|
|
313
322
|
//! well-defined type forces users to be conscious about how they classify and group their
|
|
314
323
|
//! **custom** error types, which improves their usability in error-_handling_.
|
|
315
324
|
//!
|
|
316
|
-
//! ### Improving Result::Err Types
|
|
325
|
+
//! ### Improving `Result::Err` Types
|
|
317
326
|
//!
|
|
318
|
-
//! By capturing the current [`
|
|
327
|
+
//! By capturing the current [`Error`] in the type parameter, return types in function signatures
|
|
319
328
|
//! continue to explicitly capture the perspective of the current code. This means that **more often
|
|
320
329
|
//! than not** the user is _forced_ to re-describe the error when entering a substantially different
|
|
321
330
|
//! part of the code because the constraints of typed return types will require it. This will happen
|
|
@@ -329,9 +338,8 @@
|
|
|
329
338
|
//!
|
|
330
339
|
//! ### Compatibility with other Libraries
|
|
331
340
|
//!
|
|
332
|
-
//!
|
|
333
|
-
//!
|
|
334
|
-
//! almost all other libraries that use the [`Error`] trait.
|
|
341
|
+
//! `error-stack` uses the standard [`Error`] type which makes it compatible with almost all other
|
|
342
|
+
//! libraries that use that trait.
|
|
335
343
|
//!
|
|
336
344
|
//! This has the added benefit that migrating from other error libraries can often be incremental,
|
|
337
345
|
//! as a lot of popular error library types will work within the [`Report`] struct.
|
|
@@ -341,17 +349,16 @@
|
|
|
341
349
|
//!
|
|
342
350
|
//! ### Doing more
|
|
343
351
|
//!
|
|
344
|
-
//! Beyond making new [`
|
|
345
|
-
//! thread-safe data. These attachments (and data that is [`provide`]d by the [`
|
|
352
|
+
//! Beyond making new [`Error`] types, the library supports the attachment of arbitrary
|
|
353
|
+
//! thread-safe data. These attachments (and data that is [`provide`]d by the [`Error`] can be
|
|
346
354
|
//! requested through [`Report::request_ref()`]. This gives a novel way to expand standard
|
|
347
355
|
//! error-handling approaches, without decreasing the ergonomics of creating the actual error
|
|
348
356
|
//! variants:
|
|
349
357
|
//!
|
|
350
358
|
//! ```rust
|
|
351
359
|
//! # #![cfg_attr(not(nightly), allow(unused_variables, dead_code))]
|
|
352
|
-
//! # use error_stack::Result;
|
|
353
360
|
//! # struct Suggestion(&'static str);
|
|
354
|
-
//! # fn parse_config(_: &str) -> Result<(), std::io::Error
|
|
361
|
+
//! # fn parse_config(_: &str) -> Result<(), error_stack::Report<std::io::Error>> { Ok(()) }
|
|
355
362
|
//! fn main() {
|
|
356
363
|
//! if let Err(report) = parse_config("config.json") {
|
|
357
364
|
//! # #[cfg(nightly)]
|
|
@@ -362,7 +369,7 @@
|
|
|
362
369
|
//! }
|
|
363
370
|
//! ```
|
|
364
371
|
//!
|
|
365
|
-
//! [`provide`]:
|
|
372
|
+
//! [`provide`]: core::error::Error::provide
|
|
366
373
|
//!
|
|
367
374
|
//! ## Additional Features
|
|
368
375
|
//!
|
|
@@ -371,10 +378,10 @@
|
|
|
371
378
|
//!
|
|
372
379
|
//! ### Automatic Backtraces
|
|
373
380
|
//!
|
|
374
|
-
//!
|
|
375
|
-
//!
|
|
376
|
-
//!
|
|
377
|
-
//!
|
|
381
|
+
//! [`Report`] will try to capture a [`Backtrace`] if `RUST_BACKTRACE` or `RUST_LIB_BACKTRACE` is
|
|
382
|
+
//! set and the `backtrace` feature is enabled (by default this is the case). If on a nightly
|
|
383
|
+
//! toolchain, it will use the [`Backtrace`] if provided by the base [`Error`], and will try to
|
|
384
|
+
//! capture one otherwise.
|
|
378
385
|
//!
|
|
379
386
|
//! Unlike some other approaches, this does not require the user modifying their custom error types
|
|
380
387
|
//! to be aware of backtraces, and doesn't require manual implementations to forward calls down any
|
|
@@ -388,9 +395,7 @@
|
|
|
388
395
|
//! ### Provider API
|
|
389
396
|
//!
|
|
390
397
|
//! This crate uses the [`Provider` API] to provide arbitrary data. This can be done either by
|
|
391
|
-
//! [`attach`]ing them to a [`Report`] or by providing it directly when implementing [`
|
|
392
|
-
//! The blanket implementation of [`Context`] for [`Error`] will provide any data provided by
|
|
393
|
-
//! [`Error::provide`].
|
|
398
|
+
//! [`attach`]ing them to a [`Report`] or by providing it directly when implementing [`Error`].
|
|
394
399
|
//!
|
|
395
400
|
//! To request a provided type, [`Report::request_ref`] or [`Report::request_value`] are used. Both
|
|
396
401
|
//! return an iterator of all provided values with the specified type. The value, which was provided
|
|
@@ -401,14 +406,10 @@
|
|
|
401
406
|
//!
|
|
402
407
|
//! ### Macros for Convenience
|
|
403
408
|
//!
|
|
404
|
-
//!
|
|
409
|
+
//! Two macros are provided to simplify the generation of a [`Report`].
|
|
405
410
|
//!
|
|
406
|
-
//! - [`
|
|
407
|
-
//!
|
|
408
|
-
//! details stored on a [`Report`], for the latter case it will create a new [`Report`] from the
|
|
409
|
-
//! [`Context`].
|
|
410
|
-
//! - [`bail!`] acts like [`report!`] but also immediately returns the [`Report`] as [`Err`]
|
|
411
|
-
//! variant.
|
|
411
|
+
//! - [`bail!`] acts like calling [`IntoReport::into_report()`] but also immediately returns the
|
|
412
|
+
//! [`Report`] as [`Err`] variant.
|
|
412
413
|
//! - [`ensure!`] will check an expression and if it's evaluated to `false`, it will act like
|
|
413
414
|
//! [`bail!`].
|
|
414
415
|
//!
|
|
@@ -416,7 +417,7 @@
|
|
|
416
417
|
//!
|
|
417
418
|
//! The crate comes with built-in support for `tracing`s [`SpanTrace`]. If the `spantrace` feature
|
|
418
419
|
//! is enabled and an [`ErrorLayer`] is set, a [`SpanTrace`] is either used when provided by the
|
|
419
|
-
//! root [`
|
|
420
|
+
//! root [`Error`] or will be captured when creating the [`Report`].
|
|
420
421
|
//!
|
|
421
422
|
//! [`ErrorLayer`]: tracing_error::ErrorLayer
|
|
422
423
|
//!
|
|
@@ -432,8 +433,8 @@
|
|
|
432
433
|
//!
|
|
433
434
|
//! ### Additional Adaptors
|
|
434
435
|
//!
|
|
435
|
-
//! [`ResultExt`] is a convenient wrapper around `Result<_, impl
|
|
436
|
-
//!
|
|
436
|
+
//! [`ResultExt`] is a convenient wrapper around `Result<_, impl Error>` and `Result<_, Report<impl
|
|
437
|
+
//! Error>`. It offers [`attach`](ResultExt::attach) and
|
|
437
438
|
//! [`change_context`](ResultExt::change_context) on the [`Result`] directly, but also a lazy
|
|
438
439
|
//! variant that receives a function which is only called if an error happens.
|
|
439
440
|
//!
|
|
@@ -462,29 +463,32 @@
|
|
|
462
463
|
//! `serde` | Enables serialization support for [`Report`] | disabled
|
|
463
464
|
//! `anyhow` | Provides `into_report` to convert [`anyhow::Error`] to [`Report`] | disabled
|
|
464
465
|
//! `eyre` | Provides `into_report` to convert [`eyre::Report`] to [`Report`] | disabled
|
|
466
|
+
//! `futures` | Enables support for [`Stream`], requires `unstable` | disabled
|
|
467
|
+
//! `unstable` | Enables unstable features, these features are not covered by semver | disabled
|
|
465
468
|
//!
|
|
466
469
|
//!
|
|
467
|
-
//! [`set_debug_hook`]: Report::set_debug_hook
|
|
468
|
-
//!
|
|
469
470
|
//! [`Error`]: core::error::Error
|
|
470
471
|
//! [`Error::provide`]: core::error::Error::provide
|
|
471
472
|
//! [`Backtrace`]: std::backtrace::Backtrace
|
|
472
473
|
//! [`Display`]: core::fmt::Display
|
|
473
474
|
//! [`Debug`]: core::fmt::Debug
|
|
474
475
|
//! [`SpanTrace`]: tracing_error::SpanTrace
|
|
476
|
+
//! [`Stream`]: futures_core::Stream
|
|
475
477
|
#![cfg_attr(not(feature = "std"), no_std)]
|
|
476
|
-
#![cfg_attr(
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
)]
|
|
481
|
-
#![cfg_attr(all(doc, nightly), feature(doc_auto_cfg))]
|
|
482
|
-
#![cfg_attr(all(nightly, feature = "std"), feature(backtrace_frames))]
|
|
478
|
+
#![cfg_attr(nightly, feature(error_generic_member_access))]
|
|
479
|
+
#![cfg_attr(all(nightly, feature = "unstable"), feature(try_trait_v2))]
|
|
480
|
+
#![cfg_attr(all(doc, nightly), feature(doc_cfg))]
|
|
481
|
+
#![cfg_attr(all(nightly, feature = "backtrace"), feature(backtrace_frames))]
|
|
483
482
|
#![cfg_attr(
|
|
484
483
|
not(miri),
|
|
485
|
-
doc(test(attr(
|
|
484
|
+
doc(test(attr(
|
|
485
|
+
deny(warnings, clippy::pedantic, clippy::nursery),
|
|
486
|
+
allow(exported_private_dependencies)
|
|
487
|
+
)))
|
|
486
488
|
)]
|
|
487
489
|
#![allow(unsafe_code)]
|
|
490
|
+
// There is a false positive for the badge
|
|
491
|
+
#![allow(clippy::doc_paragraphs_missing_punctuation)]
|
|
488
492
|
// This is an error handling library producing Results, not Errors
|
|
489
493
|
#![allow(clippy::missing_errors_doc)]
|
|
490
494
|
|
|
@@ -501,25 +505,33 @@ mod result;
|
|
|
501
505
|
|
|
502
506
|
mod context;
|
|
503
507
|
mod error;
|
|
508
|
+
#[cfg(feature = "unstable")]
|
|
509
|
+
pub mod ext;
|
|
504
510
|
pub mod fmt;
|
|
505
511
|
#[cfg(any(feature = "std", feature = "hooks"))]
|
|
506
512
|
mod hook;
|
|
507
513
|
#[cfg(feature = "serde")]
|
|
508
514
|
mod serde;
|
|
515
|
+
#[cfg(feature = "unstable")]
|
|
516
|
+
mod sink;
|
|
509
517
|
|
|
518
|
+
#[cfg(all(feature = "unstable", feature = "futures"))]
|
|
519
|
+
pub use self::ext::stream::TryReportStreamExt;
|
|
520
|
+
#[cfg(feature = "unstable")]
|
|
521
|
+
pub use self::ext::{iter::TryReportIteratorExt, tuple::TryReportTupleExt};
|
|
522
|
+
#[cfg(feature = "unstable")]
|
|
523
|
+
pub use self::sink::ReportSink;
|
|
510
524
|
pub use self::{
|
|
511
525
|
compat::IntoReportCompat,
|
|
512
|
-
context::
|
|
526
|
+
context::{Attachment, OpaqueAttachment},
|
|
513
527
|
frame::{AttachmentKind, Frame, FrameKind},
|
|
514
|
-
|
|
515
|
-
report::Report,
|
|
516
|
-
result::Result,
|
|
528
|
+
report::{IntoReport, Report},
|
|
517
529
|
};
|
|
518
530
|
#[doc(inline)]
|
|
519
531
|
pub use self::{future::FutureExt, result::ResultExt};
|
|
520
532
|
|
|
521
533
|
#[cfg(test)]
|
|
522
|
-
#[
|
|
534
|
+
#[expect(dead_code)]
|
|
523
535
|
mod tests {
|
|
524
536
|
|
|
525
537
|
use core::mem;
|
|
@@ -539,7 +551,7 @@ mod tests {
|
|
|
539
551
|
}
|
|
540
552
|
|
|
541
553
|
#[test]
|
|
542
|
-
fn
|
|
554
|
+
fn size() {
|
|
543
555
|
assert_eq!(mem::size_of::<Report<()>>(), mem::size_of::<*const ()>());
|
|
544
556
|
}
|
|
545
557
|
}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/// Creates a [`Report`] and returns it as [`Result`].
|
|
2
|
+
///
|
|
3
|
+
/// Shorthand for `return Err(report!(..))`.
|
|
4
|
+
///
|
|
5
|
+
/// [`Report`]: crate::Report
|
|
6
|
+
/// [`report!(...)`]: report
|
|
7
|
+
///
|
|
8
|
+
/// # Examples
|
|
9
|
+
///
|
|
10
|
+
/// Create a [`Report`] from [`Error`]:
|
|
11
|
+
///
|
|
12
|
+
/// [`Error`]: core::error::Error
|
|
13
|
+
///
|
|
14
|
+
/// ```
|
|
15
|
+
/// use std::fs;
|
|
16
|
+
///
|
|
17
|
+
/// use error_stack::bail;
|
|
18
|
+
/// # fn wrapper() -> error_stack::Result<(), impl core::fmt::Debug> {
|
|
19
|
+
/// match fs::read_to_string("/path/to/file") {
|
|
20
|
+
/// Ok(content) => println!("file contents: {content}"),
|
|
21
|
+
/// Err(err) => bail!(err),
|
|
22
|
+
/// }
|
|
23
|
+
/// # Ok(()) }
|
|
24
|
+
/// # assert!(wrapper().unwrap_err().contains::<std::io::Error>());
|
|
25
|
+
/// ```
|
|
26
|
+
///
|
|
27
|
+
/// Create a [`Report`] from [`Context`]:
|
|
28
|
+
///
|
|
29
|
+
/// [`Context`]: crate::Context
|
|
30
|
+
///
|
|
31
|
+
/// ```rust
|
|
32
|
+
/// # fn has_permission(_: &u32, _: &u32) -> bool { true }
|
|
33
|
+
/// # type User = u32;
|
|
34
|
+
/// # let user = 0;
|
|
35
|
+
/// # type Resource = u32;
|
|
36
|
+
/// # let resource = 0;
|
|
37
|
+
/// use core::fmt;
|
|
38
|
+
///
|
|
39
|
+
/// use error_stack::{bail, Context};
|
|
40
|
+
///
|
|
41
|
+
/// #[derive(Debug)]
|
|
42
|
+
/// # #[allow(dead_code)]
|
|
43
|
+
/// struct PermissionDenied(User, Resource);
|
|
44
|
+
///
|
|
45
|
+
/// impl fmt::Display for PermissionDenied {
|
|
46
|
+
/// # #[allow(unused_variables)]
|
|
47
|
+
/// fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
48
|
+
/// # const _: &str = stringify! {
|
|
49
|
+
/// ...
|
|
50
|
+
/// # }; Ok(())}
|
|
51
|
+
/// }
|
|
52
|
+
///
|
|
53
|
+
/// impl Context for PermissionDenied {}
|
|
54
|
+
///
|
|
55
|
+
/// if !has_permission(&user, &resource) {
|
|
56
|
+
/// bail!(PermissionDenied(user, resource));
|
|
57
|
+
/// }
|
|
58
|
+
/// # Ok(())
|
|
59
|
+
/// ```
|
|
60
|
+
#[cfg(not(feature = "unstable"))]
|
|
61
|
+
#[macro_export]
|
|
62
|
+
macro_rules! bail {
|
|
63
|
+
($err:expr $(,)?) => {{
|
|
64
|
+
return ::core::result::Result::Err($crate::IntoReport::into_report($err));
|
|
65
|
+
}};
|
|
66
|
+
|
|
67
|
+
[$($err:expr),+ $(,)?] => {{
|
|
68
|
+
compile_error!("enable the `unstable` feature flag to use `bail` to create multiple errors")
|
|
69
|
+
}};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/// Creates a [`Report`] and returns it as [`Result`].
|
|
73
|
+
///
|
|
74
|
+
/// [`Report`]: crate::Report
|
|
75
|
+
///
|
|
76
|
+
/// # `unstable`
|
|
77
|
+
///
|
|
78
|
+
/// The match arm: `[$($err:expr),+ $(,)?]` is considered unstable and can be used to construct a
|
|
79
|
+
/// `Report<[C]>`.
|
|
80
|
+
///
|
|
81
|
+
/// # Examples
|
|
82
|
+
///
|
|
83
|
+
/// Create a [`Report`] from [`Error`]:
|
|
84
|
+
///
|
|
85
|
+
/// [`Error`]: core::error::Error
|
|
86
|
+
///
|
|
87
|
+
/// ```
|
|
88
|
+
/// use std::fs;
|
|
89
|
+
///
|
|
90
|
+
/// use error_stack::bail;
|
|
91
|
+
/// # fn wrapper() -> Result<(), error_stack::Report<impl core::fmt::Debug>> {
|
|
92
|
+
/// match fs::read_to_string("/path/to/file") {
|
|
93
|
+
/// Ok(content) => println!("file contents: {content}"),
|
|
94
|
+
/// Err(err) => bail!(err),
|
|
95
|
+
/// }
|
|
96
|
+
/// # Ok(()) }
|
|
97
|
+
/// # assert!(wrapper().unwrap_err().contains::<std::io::Error>());
|
|
98
|
+
/// ```
|
|
99
|
+
///
|
|
100
|
+
/// Create a `Report<[C]>` from multiple errors (**unstable only**):
|
|
101
|
+
///
|
|
102
|
+
/// ```rust
|
|
103
|
+
/// # fn has_permission(_: &u32, _: &u32) -> bool { true }
|
|
104
|
+
/// # type User = u32;
|
|
105
|
+
/// # let user = 0;
|
|
106
|
+
/// # type Resource = u32;
|
|
107
|
+
/// # let create_user = 0;
|
|
108
|
+
/// # let create_resource = 0;
|
|
109
|
+
/// use error_stack::bail;
|
|
110
|
+
///
|
|
111
|
+
/// #[derive(Debug)]
|
|
112
|
+
/// # #[allow(dead_code)]
|
|
113
|
+
/// struct PermissionDenied(User, Resource);
|
|
114
|
+
///
|
|
115
|
+
/// impl core::fmt::Display for PermissionDenied {
|
|
116
|
+
/// # #[allow(unused_variables)]
|
|
117
|
+
/// fn fmt(&self, fmt: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
|
|
118
|
+
/// # const _: &str = stringify! {
|
|
119
|
+
/// ...
|
|
120
|
+
/// # }; Ok(())
|
|
121
|
+
/// }
|
|
122
|
+
/// }
|
|
123
|
+
///
|
|
124
|
+
/// impl core::error::Error for PermissionDenied {}
|
|
125
|
+
///
|
|
126
|
+
/// // You might want to look into `ReportSink` for a more incremental approach.
|
|
127
|
+
/// if !has_permission(&user, &create_user) && !has_permission(&user, &create_resource) {
|
|
128
|
+
/// bail![
|
|
129
|
+
/// PermissionDenied(user, create_user),
|
|
130
|
+
/// PermissionDenied(user, create_resource)
|
|
131
|
+
/// ];
|
|
132
|
+
/// }
|
|
133
|
+
/// # Ok(())
|
|
134
|
+
/// ```
|
|
135
|
+
#[cfg(feature = "unstable")]
|
|
136
|
+
#[cfg_attr(doc, doc(cfg(all())))]
|
|
137
|
+
#[macro_export]
|
|
138
|
+
macro_rules! bail {
|
|
139
|
+
($err:expr $(,)?) => {{
|
|
140
|
+
return ::core::result::Result::Err($crate::IntoReport::into_report($err));
|
|
141
|
+
}};
|
|
142
|
+
|
|
143
|
+
[$($err:expr),+ $(,)?] => {{
|
|
144
|
+
let mut sink = $crate::ReportSink::new();
|
|
145
|
+
|
|
146
|
+
$(
|
|
147
|
+
sink.capture($err);
|
|
148
|
+
)+
|
|
149
|
+
|
|
150
|
+
let error = match sink.finish() {
|
|
151
|
+
Ok(()) => unreachable!(),
|
|
152
|
+
Err(error) => error,
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
return ::core::result::Result::Err(error);
|
|
156
|
+
}};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/// Ensures `$cond` is met, otherwise return an error.
|
|
160
|
+
///
|
|
161
|
+
/// Shorthand for <code>if !$cond { [bail!(..)]) }</code>
|
|
162
|
+
///
|
|
163
|
+
/// [`Report`]: crate::Report
|
|
164
|
+
/// [bail!(..)]: bail
|
|
165
|
+
///
|
|
166
|
+
/// # Examples
|
|
167
|
+
///
|
|
168
|
+
/// Create a [`Report`] from an [`Error`]:
|
|
169
|
+
///
|
|
170
|
+
/// [`Error`]: core::error::Error
|
|
171
|
+
///
|
|
172
|
+
/// ```rust
|
|
173
|
+
/// # fn has_permission(_: &u32, _: &u32) -> bool { true }
|
|
174
|
+
/// # type User = u32;
|
|
175
|
+
/// # let user = 0;
|
|
176
|
+
/// # type Resource = u32;
|
|
177
|
+
/// # let resource = 0;
|
|
178
|
+
/// use core::error::Error;
|
|
179
|
+
/// use core::fmt;
|
|
180
|
+
///
|
|
181
|
+
/// use error_stack::ensure;
|
|
182
|
+
///
|
|
183
|
+
/// #[derive(Debug)]
|
|
184
|
+
/// # #[allow(dead_code)]
|
|
185
|
+
/// struct PermissionDenied(User, Resource);
|
|
186
|
+
///
|
|
187
|
+
/// impl fmt::Display for PermissionDenied {
|
|
188
|
+
/// # #[allow(unused_variables)]
|
|
189
|
+
/// fn fmt(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
|
|
190
|
+
/// # const _: &str = stringify! {
|
|
191
|
+
/// ...
|
|
192
|
+
/// # };
|
|
193
|
+
/// Ok(())
|
|
194
|
+
/// }
|
|
195
|
+
/// }
|
|
196
|
+
///
|
|
197
|
+
/// impl Error for PermissionDenied {}
|
|
198
|
+
///
|
|
199
|
+
/// ensure!(
|
|
200
|
+
/// has_permission(&user, &resource),
|
|
201
|
+
/// PermissionDenied(user, resource)
|
|
202
|
+
/// );
|
|
203
|
+
/// # Ok(())
|
|
204
|
+
/// ```
|
|
205
|
+
#[macro_export]
|
|
206
|
+
macro_rules! ensure {
|
|
207
|
+
($cond:expr, $err:expr $(,)?) => {{
|
|
208
|
+
if !bool::from($cond) {
|
|
209
|
+
$crate::bail!($err)
|
|
210
|
+
}
|
|
211
|
+
}};
|
|
212
|
+
}
|