1 个不稳定版本
| 0.1.0 | 2019年6月25日 |
|---|
#205 in 无标准库
59KB
739 行
chek:用于检查的宏。
这是一个类似于 assert_eq!、assert_ne! 等的更全面功能的断言宏集合。它提供了比仅仅在 assert!(...) 主体中进行比较更好的输出,因为它在输出中包含了参数的值。与 assert_eq!/assert_ne! 不同,它还会记录产生值的表达式字符串。
它是我的 more-asserts Crate 的后继者,由于模块名称过长,在 Rust 2018 中使用时有些不愉快,因为没有使用 #[macro_use] extern crate ...。
此外,它在所有配置中都是无std兼容的。
用法
Cargo功能
inline_panics
这将断言直接转换为panic,而不是调用执行panic的单独函数。这会导致panic本身的错误报告更好(它将报告正确的行号/文件,而不是报告panic发生在 chek Crate 中),但代价是代码膨胀。
默认开启。
断言
以下所有宏都接受可选的格式化消息参数,例如 check::lt!(a, b, "it should have been less because of: {}", thing)。注意,即使提供了这个,a 和 b 仍将被记录,因此不需要手动执行。
-
chek::less!(a, b):等价于assert!(a < b),但在失败时具有更好的输出- 还有一个仅适用于 debug_assertions 的版本:
chek::debug_less!。 - 以下提供了一些别名:用于仅调试断言版本的代码:
chek::lt!和chek::debug_lt!。
- 还有一个仅适用于 debug_assertions 的版本:
-
chek::less_or_equal!(a, b):与assert!(a <= b)等价,但失败时的输出更好。- 提供了仅调试断言版本的代码:
chek::less_or_equal!。 - 以下提供了一些别名:用于仅调试断言版本的代码:
chek::le!和chek::debug_le!。
- 提供了仅调试断言版本的代码:
-
chek::greater!(a, b):与assert!(a > b)等价,但失败时的输出更好。- 提供了仅调试断言版本的代码:
chek::debug_greater!。 - 以下提供了一些别名:用于仅调试断言版本的代码:
chek::gt!和chek::debug_gt!。
- 提供了仅调试断言版本的代码:
-
chek::greater_or_equal!(a, b):与assert!(a >= b)等价,但失败时的输出更好。- 提供了仅调试断言版本的代码:
chek::debug_greater_or_equal!。 - 以下提供了一些别名:用于仅调试断言版本的代码:
chek::ge!和chek::debug_ge!。
- 提供了仅调试断言版本的代码:
-
chek::equal!(a, b):与assert_eq!(a, b)等价,但失败时的输出更好。- 提供了仅调试断言版本的代码:
chek::debug_equal!。 - 以下提供了一些别名:用于仅调试断言版本的代码:
chek::eq!和chek::debug_eq!。
- 提供了仅调试断言版本的代码:
-
chek::not_equal!(a, b):与assert_ne!(a, b)等价,但失败时的输出更好。- 有一个仅包含调试断言的版本:
chek::debug_not_equal!。 - 提供了以下别名:仅调试断言版本中为
chek::ne!和chek::debug_ne!。
- 有一个仅包含调试断言的版本:
-
chek::almost_zero!(a):类似于assert!(almost::zero(a)),但在失败时具有更好的输出。- 有一个仅包含调试断言的版本:
chek::debug_almost_zero!。 - 使用了
almostcrate。有关详细信息,请参阅almost::zero文档。
- 有一个仅包含调试断言的版本:
-
chek::not_almost_zero!(a):类似于assert!(!almost::zero(a)),但在失败时具有更好的输出。- 有一个仅包含调试断言的版本:
chek::debug_not_almost_zero!。 - 使用了
almostcrate。有关详细信息,请参阅almost::zero文档。
- 有一个仅包含调试断言的版本:
-
chek::almost_equal!(a, b):等同于assert!(almost::equal(a, b)),但在失败时具有更好的输出。- 重要:如果
a或b是硬编码的常量零,则不要使用!相反,使用chek::almost_zero!(v)。 - 有一个仅包含调试断言的版本:
chek::debug_almost_equal!。 - 使用了
almostcrate。有关详细信息,请参阅almost::equal文档。
- 重要:如果
-
chek::not_almost_equal!(a, b):等同于assert!(!almost::equal(a, b)),但在失败时具有更好的输出。- 重要:如果
a或b是硬编码的常量零,则不要使用!相反,使用chek::not_almost_zero!(v)。 - 提供仅包含调试断言的版本:
chek::debug_not_almost_equal!。 - 使用了
almostcrate。有关详细信息,请参阅almost::equal文档。
- 重要:如果
-
chek::almost_zero_with_tolerance!(a):类似于assert!(almost::zero_with_tolerance(a, b, tol)),但在失败时提供更好的输出。- 提供仅包含调试断言的版本:
chek::debug_almost_zero_with_tolerance!。 - 使用了
almostcrate。有关详细信息,请参阅almost::zero_with_tolerance文档。
- 提供仅包含调试断言的版本:
-
chek::not_almost_zero_with_tolerance!(a):类似于assert!(!almost::zero_with_tolerance(a, b, tol)),但在失败时提供更好的输出。- 提供仅包含调试断言的版本:
chek::debug_not_almost_zero_with_tolerance!。 - 使用了
almostcrate。有关详细信息,请参阅almost::zero_with_tolerance文档。
- 提供仅包含调试断言的版本:
-
chek::debug_unreachable_unchecked!():不安全。类似于std::hint::unreachable_unchecked,但在调试构建中如果触发则会导致恐慌。 -
chek::debug_unreachable!():与宏unreachable!等效,但在发布构建中会被替换为空操作。
许可证
依赖关系
~32KB