#assertions #testing #assert #debug-assert

postfixassert

以方法风格实现Rust标准库中常见断言的特质。这允许断言可以串联并作为表达式的一部分。

2次发布

0.1.1 2021年4月4日
0.1.0 2021年4月4日

#675 in 调试

MIT许可证

12KB
151

postfix_assert

此代码包为具有常见断言属性的Rust标准库结构提供特质实现。这些断言与其它代码包不同,它们放弃了常见的assert!(x.is_none());语句风格,转而使用内联、易读的x.assert_none();。重要的是,这些assert_*方法返回它们被调用的引用,这样你就可以将断言与你的代码交织在一起,而不是它们需要在单独的行上。

示例

fn computation_producing_some() -> Option<u32> {
    Some(1)
}

fn computation_producing_none_from_some(x: Option<u32>) -> Option<u32> {
    None
}
computation_producing_some()
    .assert_some()
    .and(computation_producing_none_from_some)
    .assert_none()

代码包功能

  • debug - 当启用时,这将导致所有断言变为debug_assertions,这些断言仅在调试模式下运行,而不在发布模式下运行。断言的开销通常很小,尤其是在编译器可以优化它们的情况下。当它们成本较高时,此功能仅在您尝试调试代码时启用断言。当此代码在发布模式下运行时,此库中的所有方法都会被优化掉。

其他断言代码包

我开始整理一个列表,其中包含以某种形式增强断言的代码包。我以两种方式使用这个列表:了解新代码包,这些代码包我可能想在代码中使用,以及我可以从这些其他代码包中借用有用断言的想法。这个列表总是不完整的,并且可能或可能没有每个代码包旁边的我的评论。

许可协议:MIT

无运行时依赖

功能