Derive Macro Error

Source
#[derive(Error)]
{
    // Attributes available to this derive:
    #[error]
}
Expand description

The implementation of trait ‘Error’ (writed for crate add_macro)

§Examples:

use add_macro_impl_error::Error;
 
#[derive(Debug, Error)]
enum CustomError {
    Io(std::io::Error),
    Wrong,
}

impl std::fmt::Display for CustomError {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match &self {
            Self::Io(e) => write!(f, "{e}"),
            Self::Wrong => write!(f, "Something went wrong.. =/"),
        }
    }
}

#[derive(Debug, Error)]
pub struct Error {
    source: CustomError,
}

impl std::fmt::Display for Error {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", &self.source)
    }
}

fn main() {
    let err = CustomError::Wrong;
    assert_eq!(format!("{err}"), "Something went wrong.. =/");
 
    let err = Error { source: CustomError::Wrong };
    assert_eq!(format!("{err}"), "Something went wrong.. =/");
}