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 上。