errgo 0.1.4

generate enum variants inline
Documentation
#![allow(unused)]

use errgo::errgo;

#[errgo(derive(Debug, thiserror::Error))]
fn simple_string_error() -> Result<(), FooError> {
    Err(err!(
        #[error("no bars :(")]
        NoBars
    ))
}

#[errgo(derive(Debug, thiserror::Error))]
fn interpolated_string_error(u: usize) -> Result<(), BarError> {
    Err(err!(
        #[error("{0} foos is not enough!")]
        NotEnoughFoos(usize = u)
    ))
}

#[errgo(derive(Debug, thiserror::Error))]
fn error_implements_from() -> Result<(), BazError> {
    Err(err!(
        #[error("fuck")]
        IoErr(
            #[from]
            std::io::Error = std::io::Error::new(std::io::ErrorKind::PermissionDenied, "blah")
        )
    ))
}

#[test]
fn thiserror_message_simple() {
    assert_eq!(simple_string_error().unwrap_err().to_string(), "no bars :(")
}

#[test]
fn thiserror_message_interpolated() {
    assert_eq!(
        interpolated_string_error(1).unwrap_err().to_string(),
        "1 foos is not enough!"
    )
}

fn assert_error_implements_from(e: std::io::Error) -> BazError {
    e.into()
}