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()
);
}