blob: fc39601dce0bf3125b7cb355476873ce6accb471 [file] [log] [blame]
#[macro_use]
extern crate failure;
use failure::Fail;
#[derive(Debug, Fail)]
#[fail(display = "my error")]
struct MyError;
#[derive(Debug, Fail)]
#[fail(display = "my wrapping error")]
struct WrappingError(#[fail(cause)] MyError);
fn bad_function() -> Result<(), WrappingError> {
Err(WrappingError(MyError))
}
fn main() {
for cause in Fail::iter_chain(&bad_function().unwrap_err()) {
println!("{}: {}", cause.name().unwrap_or("Error"), cause);
}
}