#failure #error #log #tracing #macro #no-alloc

no-std tiny_bail

小巧但灵活的宏,用于失败时退出

5个不稳定版本

新版本 0.3.0 2024年8月19日
0.2.0 2024年8月18日
0.1.2 2024年8月1日
0.1.1 2024年8月1日
0.1.0 2024年8月1日

#312调试

Download history 206/week @ 2024-07-26 141/week @ 2024-08-02 80/week @ 2024-08-09 307/week @ 2024-08-16

734 每月下载量
pyri_tooltip 中使用

MIT/Apache

21KB
487

tiny_bail

Crates.io Docs License

退出是介于 unwrap? 之间的错误处理模式

  • unwrap 相比:退出将 returncontinuebreak 而不是panic。
  • ? 相比:退出将记录或忽略错误而不是传播它。

中间路径避免了使用 ? 传播错误时的不便。

入门指南

此crate提供六个宏变体

以及它们的微型别名: r!rq!c!cq!b!bq!

这些宏支持 boolOptionResult 类型,开箱即用。通过实现 Success 来扩展其他类型。

您可以将返回值作为宏的可选第一个参数进行指定,或者省略它以默认为 Default::default()—这在没有返回值的函数中也能正常工作。

示例

use tiny_bail::prelude::*;

// With `tiny_bail`:
fn increment_last(arr: &mut [i32]) {
    *r!(arr.last_mut()) += 1;
}

// Without `tiny_bail`:
fn increment_last_manually(arr: &mut [i32]) {
    if let Some(x) = arr.last_mut() {
        *x += 1;
    } else {
        println!("Bailed at src/example.rs:34:18: `arr.last_mut()`");
        return;
    }
}

许可证

此crate可供您选择以下任一协议下使用:MITApache-2.0

依赖

~355–500KB