#error-derive #error #derive #error-stack

error-stack-derive

一个衍生宏,可用于与 error_stack 或任何错误系统配合使用

1 个不稳定版本

0.1.0 2022年8月22日

#18 in #error-derive


shanimation-rs 中使用

MIT 许可证

14KB
133

错误堆栈衍生

badge

一个简单的crate,包含一个简单的衍生宏,使您的错误处理工作流程比以往任何时候都要简单 :)

查看示例目录,了解更多关于宏的信息。

或者,这里有一个

use std::fs::read_to_string;

use error_stack::{IntoReport, ResultExt};
use error_stack_derive::ErrorStack;

#[derive(ErrorStack, Debug)]
#[error_message(&format!("Error occured with foo ({}, {})", self.bar, self.baz))]
struct FooError {
    bar: u8,
    baz: u8,
}

fn main() {
    let foo = read_to_string("foo.txt")
        .report()
        .change_context(FooError { bar: 0, baz: 1 });

    assert!(foo.is_err());
    let err = foo.err().unwrap();
    // Error occured with foo (0, 1)
    //              at examples/structs.rs:16:10
    // 
    // Caused by:
    //    0: No such file or directory (os error 2)
    //              at examples/structs.rs:15:10
    // FooError { bar: 0, baz: 1 }
    println!("{:?}\n{:?}", err, err.downcast_ref::<FooError>().unwrap())
}

依赖项

~1.5MB
~35K SLoC