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