2 个不稳定版本
0.1.0 | 2021 年 1 月 10 日 |
---|---|
0.0.0 | 2021 年 1 月 9 日 |
#1502 在 Rust 模式
7KB
87 行
whaterror
您的返回类型中没有任何内容,无论是有用的还是其他。
用于标准库中 Termination
特性的更可自定义的替代品的进程宏属性。
作为一个简单的示例,这复现了对于返回 Result<T, E>
的 fn main()
的标准行为
use whaterror::whaterror;
#[whaterror(|err| eprintln!("Error: {:#?}", err))]
fn main() -> Result<(), Error> {
Err(Error::Failed)
}
如果您的处理函数返回,whaterror
将会自动以代码 1 退出(或在测试中引发恐慌)。
这同样适用于 Option<T>
use whaterror::whaterror;
#[whaterror(|| eprintln!("returned None"))]
fn main() -> Option<()> {
None
}
在这种情况下不需要 ||
,因为没有参数。
use whaterror::whaterror;
#[whaterror(unreachable!())]
fn main() -> Option<()> {
Some(())
}
这同样适用于您期望的非 main
类型。技术上允许非 main
函数,但当前有非常严格的限制。这些限制计划在未来取消。
依赖项
~1.5MB
~36K SLoC