backerror 0.1.3

Java style backtrace for Rust
Documentation
use backerror::backerror;
use thiserror::Error;

#[backerror]
#[derive(Debug, Error)]
#[error(transparent)]
pub struct MyError1(#[from] std::io::Error);

#[backerror]
#[derive(Debug, Error)]
pub enum MyError2 {
    #[error("By MyError2: {0}")]
    My1(#[from] MyError1),
}

#[backerror]
#[derive(Debug, Error)]
pub enum MyError3 {
    #[error("By MyError3: {0}")]
    My2(#[from] MyError2),
}

fn throw_error1() -> Result<(), MyError1> {
    std::fs::File::open("blurb.txt")?;
    Ok(())
}

fn throw_error2() -> Result<(), MyError2> {
    Ok(throw_error1()?)
}
fn throw_error3() -> Result<(), MyError3> {
    Ok(throw_error2()?)
}

#[test]
fn test_display() {
    if let Err(err) = throw_error3() {
        println!("{}", err);
    }
}

#[test]
fn test_debug() {
    if let Err(e) = throw_error3() {
        println!("{:?}", e);
    }
}

#[test]
#[should_panic]
fn test_unwrap() {
    throw_error2().unwrap();
}