use err_handler::err_handler;
use thiserror::Error;
#[derive(Debug, Error)]
enum Err {
#[error("err1")]
Err1,
#[error("err2")]
Err2,
}
#[err_handler(task_handler)]
fn task(_v: i32) -> Result<i32, Err> {
Err(Err::Err1)
}
fn task_handler(e: Err) -> Result<i32, Err> {
match e {
Err::Err1 => Ok(100),
_ => Err(e),
}
}
fn main() -> Result<(), Err> {
assert_eq!(task(0)?, 100);
Ok(())
}