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 模式

Download history 87/week @ 2024-03-11 146/week @ 2024-03-18 68/week @ 2024-03-25 125/week @ 2024-04-01 33/week @ 2024-04-08 58/week @ 2024-04-15 75/week @ 2024-04-22 238/week @ 2024-04-29 53/week @ 2024-05-06 84/week @ 2024-05-13 69/week @ 2024-05-20 110/week @ 2024-05-27 60/week @ 2024-06-03 55/week @ 2024-06-10 65/week @ 2024-06-17 69/week @ 2024-06-24

每月 252 次下载
用于 20 个 crate (14 个直接使用)

MIT/Apache

11KB
187

orfail

orfail Documentation Actions Status License

用于处理可移植不可恢复错误的错误处理库。

此 crate 提供:

  • Failure 结构体,表示具有错误信息和用户级回溯的不可恢复错误
    • 由简单的类型(u32StringVec)构成
      • 跨进程和语言边界可移植
      • 可选的 serde 支持 ("serde" 功能)
    • 不实现 std::error::Error 特性
  • OrFail 特性
    • 每次调用 OrFail::or_fail() 时,都会将回溯位置附加到 Failure
    • boolOption<_>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