3个版本 (稳定)
1.1.0 | 2023年2月13日 |
---|---|
1.0.0 | 2022年12月7日 |
0.1.0 | 2022年11月15日 |
#771 in 过程宏
每月473次 下载
18KB
349 代码行
justerror
此宏依赖于 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