[package]
name = "rootcause"
version = "0.12.0"
edition = "2024"
license = "MIT/Apache-2.0"
categories = ["rust-patterns", "no-std"]
keywords = ["error", "error-handling", "ergonomic", "library", "no_std"]
description = "A flexible, ergonomic, and inspectable error reporting library for Rust"
repository = "https://github.com/rootcause-rs/rootcause"
documentation = "https://docs.rs/rootcause"
rust-version = "1.89"
[workspace]
members = ["rootcause-internals", "rootcause-backtrace", "rootcause-tracing"]
[features]
default = []
compat-anyhow1 = ["dep:anyhow"]
compat-error-stack05 = ["dep:error-stack05"]
compat-error-stack06 = ["dep:error-stack"]
compat-eyre06 = ["dep:eyre"]
[dependencies]
hashbrown = { version = "0.16.0", default-features = false }
indexmap = { version = "2.13.0", default-features = false }
rustc-hash = { version = "2.1.1", default-features = false }
triomphe = { version = "0.1.15", default-features = false }
anyhow = { version = "1.0.100", default-features = false, optional = true }
error-stack = { version = "0.6.0", default-features = false, optional = true }
error-stack05 = { package = "error-stack", version = "0.5.0", default-features = false, optional = true }
eyre = { version = "0.6.12", default-features = false, optional = true }
rootcause-internals = { path = "rootcause-internals", version = "=0.12.0" }
[dev-dependencies]
derive_more = { version = "2.1.0", default-features = false, features = [
"error",
"from",
"display",
] }
eyre = { version = "0.6.12", features = ["auto-install"] }
indexmap = "2.13.0"
reqwest = "0.13.2"
serde_json = "1.0.145"
static_assertions = "1.1.0"
thiserror = "2.0.17"
tokio = { version = "1.49.0", features = ["macros", "rt-multi-thread"] }
tracing = { version = "0.1.44", features = ["attributes"] }
tracing-subscriber = { version = "0.3.22", features = ["registry"] }
[[example]]
name = "anyhow_interop"
required-features = ["compat-anyhow1"]
[[example]]
name = "anyhow_migration"
required-features = ["compat-anyhow1"]
[[example]]
name = "error_stack_interop"
required-features = ["compat-error-stack06"]
[[example]]
name = "eyre_interop"
required-features = ["compat-eyre06"]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[lints.rust]
unexpected_cfgs = { level = "allow", check-cfg = ['cfg(nightly_extra_checks)'] }