#assertions # #输入 #枚举 #rassert #表达 #结果返回

rassert-rs

用于表达结果返回断言的简单宏

3 个稳定版本

3.0.0 2022 年 8 月 27 日
2.0.0 2022 年 8 月 27 日
1.0.0 2022 年 3 月 30 日

#1635 in Rust 模式


用于 4 个包 (2 直接)

MIT 许可证

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

无运行时依赖