# Backtrace/Backtrait Error
Procedural macros to aid the propagation of `Backtrace`s between structs/enums (typically errors).
Dunno if it'd be useful yet.
## Gist
Provides function-like procedural macros to: generate a simple trait for facilitating propagating backtraces (the trait is defined where the macro is called); and, generate an enum that contains the backtrace and optional source of the error. See below.
```rust
define_backtrace_error!(ErrorWithBacktrace); // Expands into `pub trait ErrorWithBacktrace: std::error::Error {`...
define_backtrace_source!(BacktraceSource, ErrorWithBacktrace);
```
Provides an attribute procedural macro to derive a simple `std::error::Error` implementation for structs/enums. See below.
```rust
#[backtrace_derive(ErrorWithBacktrace)]
#[derive(Debug, BacktraceError)]
struct UnitError(#[display] String, #[backtrace] BacktraceSource);
```