use suzunari_error::*;
#[derive(Debug)]
struct ExternalLibError(String);
impl std::fmt::Display for ExternalLibError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "external lib error: {}", self.0)
}
}
#[suzunari_error]
#[suzu(display("processing failed"))]
struct ProcessError {
#[suzu(from)]
error: ExternalLibError,
}
fn call_external_lib() -> Result<(), ExternalLibError> {
Err(ExternalLibError("invalid input format".into()))
}
fn process() -> Result<(), ProcessError> {
call_external_lib().context(ProcessSnafu)?;
Ok(())
}
#[suzunari_error::report]
fn main() -> Result<(), ProcessError> {
process()?;
Ok(())
}