11 个版本 (6 个重大更新)
新 0.7.0 | 2024 年 8 月 15 日 |
---|---|
0.6.0 | 2024 年 8 月 11 日 |
0.5.0 | 2024 年 8 月 9 日 |
0.4.0 | 2024 年 8 月 8 日 |
0.1.3 | 2024 年 7 月 6 日 |
#469 in Rust 模式
每月 827 次下载
29KB
685 行
micro_errors
处理错误而不采用 derive 宏方法的小工具。
暴露一个结构体 ErrorLink_
,通常用于 Result
的 Err
变体中。它包含一个泛型有效载荷,以及进一步包含 String
有效载荷的 ErrorLink_
。最终的链接将指向 Backtrace
。这个 Backtrace
是近似的,尤其是从非 ErrorLink_
链接时。还要记住设置 RUST_BACKTRACE
。
对于泛型有效载荷作为 String
,已经实现了辅助链接(例如,.map_err
)的小工具。
代码片段
从非 ErrorLink_
创建 ErrorLink_
。
use crate::ErrorLinkable;
pub fn function() -> Result<(), ErrorLink_<String>> {
Err::<(), _>(std::io::Error::other("Underlying error."))
.map_err(|e| e.as_link())
}
从非 ErrorLink_
链接 ErrorLink_
。
use crate::ErrorLinkable;
pub fn function() -> Result<(), ErrorLink_<String>> {
Err::<(), _>(std::io::Error::other("Underlying error."))
.map_err(|e| e.link("Higher level error."))
}
从现有的 ErrorLink_
链接 ErrorLink_
。
pub fn function() -> Result<(), ErrorLink_<String>> {
Err::<(), _>(ErrorLink_::new_string("Underlying error."))
.map_err(|e| e.link("Higher level error."))
}
错误显示/打印的输出如下。
Error no. 0: Higher level error.
Error no. 1: Underlying error.
Approximate backtrace of error no. 1:
0: micro_errors::ErrorLink_<alloc::string::String>::new_string
at ./src/lib.rs:270:51
1: micro_errors::tests::test__chaining_error_link_
at ./src/lib.rs:72:26
2: micro_errors::tests::test__chaining_error_link_::{{closure}}
at ./src/lib.rs:69:36
3: core::ops::function::FnOnce::call_once
at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ops/function.rs:250:5
4: core::ops::function::FnOnce::call_once
at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/core/src/ops/function.rs:250:5
5: test::__rust_begin_short_backtrace
at /rustc/051478957371ee0084a7c0913941d2a8c4757bb9/library/test/src/lib.rs:625:18