autoerr 0.0.5

Very opinionated helper to declare error types.
Documentation
autoerr::create_error_v2! {
    name: Error2;
    txt: "ServiceError";
    variants: {
        Logic,
        TooLarge(u32),
        Position(::std::string::String, std::string::String),
        Database(#[from] some::database::Error),
        Network(some::network::Error, u64),
    };
}

autoerr::create_error_v1!(
    name(Error, "ServiceError"),
    enum variants {
        Logic,
        TooLarge(u32),
        Position(::std::string::String, std::string::String),
        Database(#[from] some::database::Error),
        Network(some::network::Error, u64),
    },
);

mod some {
    pub mod database {
        #[derive(Debug, thiserror::Error)]
        pub enum Error {
            #[error("Row")]
            Row,
            #[error("Column({0})")]
            Column(f32),
        }
    }
    pub mod network {
        #[derive(Debug, thiserror::Error)]
        pub enum Error {
            #[error("Connect")]
            Connect,
        }
    }
}

#[test]
fn basic_00() {
    eprintln!("{}", show());
    let _e: Error = Error::Logic;
    let _e: Error = Error::Database(some::database::Error::Row);
    let _e: Error = some::database::Error::Row.into();
}

#[test]
fn basic_01() {
    assert_eq!("ServiceError::Logic", Error::Logic.to_string());
}

#[test]
fn basic_02() {
    assert_eq!(
        "ServiceError::TooLarge(42)",
        Error::TooLarge(42).to_string()
    );
}

#[test]
fn basic_03() {
    assert_eq!(
        "ServiceError::Database(Row)",
        Error::from(some::database::Error::Row).to_string()
    );
}

#[test]
fn basic_04() {
    assert_eq!(
        "ServiceError::Database(Column(5.67))",
        Error::from(some::database::Error::Column(5.67)).to_string()
    );
}

#[test]
fn basic_05() {
    assert_eq!(
        "ServiceError::Position(A, B)",
        Error::Position(format!("A"), format!("B")).to_string()
    );
}