#error #error-handling #amount #reduce #extension #helps #handwriting

justerror

thiserror 的扩展,有助于减少手动编写代码

3个版本 (稳定)

1.1.0 2023年2月13日
1.0.0 2022年12月7日
0.1.0 2022年11月15日

#771 in 过程宏

Download history 91/week @ 2024-04-07 77/week @ 2024-04-14 91/week @ 2024-04-21 158/week @ 2024-04-28 92/week @ 2024-05-05 98/week @ 2024-05-12 140/week @ 2024-05-19 70/week @ 2024-05-26 131/week @ 2024-06-02 112/week @ 2024-06-09 179/week @ 2024-06-16 111/week @ 2024-06-23 169/week @ 2024-06-30 95/week @ 2024-07-07 97/week @ 2024-07-14 107/week @ 2024-07-21

每月473次 下载

MIT 许可证

18KB
349 代码行

justerror

github crates.io docs.rs

此宏依赖于 thiserror crate,并旨在通过显式类型(而不是 anyhow)来描述应用程序中的错误来减少手动编写代码。

安装

添加到 Cargo.toml

justerror = "0.1"

添加到 main.rs

#[macro_use]
extern crate justerror;

用法

此宏接受一个主题结构体或枚举,并应用预定义的 #[error] 消息的 thiserror 属性。

通常,您可以将 #[Error] 宏附加到错误类型,然后完成。

#[Error]
enum EnumError {
    Foo,
    Bar {
        a: &'static str,
        b: usize
    },
}

eprintln!("{}", EnumError::Bar { a: "Hey!", b: 42 });

// EnumError::Bar
// === ↴
// a: Hey!
// b: 42

宏接受两个可选参数

  • desc: 字符串
  • fmt: display | debug | "<custom format>"

两者都可以应用于根级别。

#[Error(desc = "My emum error description", fmt = debug)]
enum EnumError {
    Foo(usize),
}

也可以应用于变体级别。

#[Error(desc = "My emum error description", fmt = debug)]
enum EnumError {
    #[error(desc = "Foo error description", fmt = display)]
    Foo(usize),
}

fmt 也可以应用于单个字段。

#[Error(desc = "My emum error description", fmt = debug)]
enum EnumError {
    #[error(desc = "Foo error description", fmt = display)]
    Foo(#[fmt(">5")] usize),
}

有关更多示例,请参阅 测试

许可证

MIT。

依赖关系

~1.5MB
~35K SLoC