[package]
name = "rootcause"
version = "0.13.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",
"rootcause-preformat",
]
[features]
default = []
compat-anyhow1 = ["dep:anyhow"]
compat-error-stack05 = ["dep:error-stack05"]
compat-error-stack06 = ["dep:error-stack06"]
compat-error-stack07 = ["dep:error-stack07"]
compat-eyre06 = ["dep:eyre"]
[dependencies]
hashbrown = { version = "0.17.1", default-features = false }
indexmap = { version = "2.14.0", default-features = false }
rustc-hash = { version = "2.1.2", default-features = false }
triomphe = { version = "0.1.15", default-features = false }
anyhow = { version = "1.0.102", default-features = false, optional = true }
error-stack05 = { package = "error-stack", version = "0.5.0", default-features = false, optional = true }
error-stack06 = { package = "error-stack", version = "0.6.0", default-features = false, optional = true }
error-stack07 = { package = "error-stack", version = "0.7.1", default-features = false, optional = true }
eyre = { version = "0.6.12", default-features = false, optional = true }
rootcause-internals = { path = "rootcause-internals", version = "=0.13.0" }
[dev-dependencies]
derive_more = { version = "2.1.1", default-features = false, features = [
"error",
"from",
"display",
] }
eyre = { version = "0.6.12", features = ["auto-install"] }
indexmap = "2.14.0"
reqwest = "0.13.4"
serde_json = "1.0.150"
static_assertions = "1.1.0"
thiserror = "2.0.18"
tokio = { version = "1.52.3", features = ["macros", "rt-multi-thread"] }
tracing = { version = "0.1.44", features = ["attributes"] }
tracing-subscriber = { version = "0.3.23", 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-stack07"]
[[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)'] }