1 个不稳定版本
0.1.0 | 2022年8月22日 |
---|
#18 in #error-derive
在 shanimation-rs 中使用
14KB
133 行
错误堆栈衍生
一个简单的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