6 个版本 (2 个稳定版本)
1.1.0 | 2023 年 8 月 18 日 |
---|---|
1.0.0 | 2023 年 8 月 18 日 |
0.1.3 | 2023 年 2 月 15 日 |
0.1.1 | 2022 年 12 月 3 日 |
0.1.0 | 2022 年 10 月 25 日 |
#476 in Rust 模式
每月 252 次下载
用于 20 个 crate (14 个直接使用)
11KB
187 行
orfail
用于处理可移植不可恢复错误的错误处理库。
此 crate 提供:
Failure
结构体,表示具有错误信息和用户级回溯的不可恢复错误- 由简单的类型(
u32
、String
和Vec
)构成- 跨进程和语言边界可移植
- 可选的
serde
支持 ("serde" 功能)
- 不实现
std::error::Error
特性
- 由简单的类型(
OrFail
特性- 每次调用
OrFail::or_fail()
时,都会将回溯位置附加到Failure
bool
、Option<_>
和Result<_, _>
实现OrFail
- 每次调用
示例
use orfail::{OrFail, Result};
fn check_non_zero(n: isize) -> Result<()> {
(n != 0).or_fail()?;
Ok(())
}
fn safe_div(x: isize, y: isize) -> Result<isize> {
check_non_zero(y).or_fail()?;
Ok(x / y)
}
// OK
assert_eq!(safe_div(4, 2), Ok(2));
// NG
assert_eq!(safe_div(4, 0).err().map(|e| e.to_string()),
Some(
r#"expected `true` but got `false`
at src/lib.rs:8
at src/lib.rs:13
"#.to_owned()));
依赖项
~175KB