This is a Rust crate that provides a convenient derive macro (#[derive(Error)]) for implementing std::error::Error on your custom error types (structs or enums). The goal is to enable library authors to build expressive, typed error types, with readable Display implementations (via #[error("...")] annotations) as well as From conversions (#[from]), source tracking (#[source]), and optionally backtraces. It is designed so that switching from handwritten error implementation to using this error is not a breaking change: you retain the same API. The README shows examples: an enum with variants annotated by #[error("…")] and #[from] fields to derive the appropriate trait impls. The crate expects rustc ≥ 1.68+. The README also outlines how you choose; use thiserror if you care about designing your own error-types (e.g., for libraries) vs anyhow for applications.
Features
- #[derive(Error)] macro to implement std::error::Error for your types
- #[error("…")] annotation for Display message formatting with interpolation
- #[from] attribute for automatic From conversions from underlying error types
- #[source] attribute (or implied) for error chaining
- Backtrace field support (via #[backtrace], nightly-only)
- Library-friendly design: no impact on public API if switching implementation