3 个稳定版本
3.0.0 | 2022 年 8 月 27 日 |
---|---|
2.0.0 | 2022 年 8 月 27 日 |
1.0.0 | 2022 年 3 月 30 日 |
#1635 in Rust 模式
用于 4 个包 (2 直接)
6KB
86 行
rassert
用于表达返回结果断言和通知、硬错误断言(在无法将错误向上传播的函数中很有用,您希望记录错误)的简单宏。
用法
use rassert::{rassert, rassert_notify};
enum MyError {
NotAnswerToLife,
}
struct SomeOutput;
pub fn foo(input: usize) -> Result<SomeOutput, MyError> {
rassert!(input == 42, MyError::NotAnswerToLife);
let output = ...;
Ok(output)
}
pub fn bar(input: usize) {
rassert_notify!(1 != 1, error!("Well, that's not true."));
println!("Hi everyone"); // Never reached since the above rassert_notify fails and returns
}
为什么
因为替代方案相当难看,并且不明显地表达该表达式是一个先决条件。
enum MyError {
NotAnswerToLife,
}
struct SomeOutput;
pub fn foo(input: usize) -> Result<SomeOutput, MyError> {
if input != 42 {
return Err(MyError::NotAnswerToLife);
}
let output = ...;
Ok(output)
}
我发现自己在项目中反复复制粘贴相同的 rassert 宏,所以不妨把它放在 Cargo 上。