2 个不稳定版本

0.1.0 2021 年 1 月 10 日
0.0.0 2021 年 1 月 9 日

#1502Rust 模式

MIT/Apache

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