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!
。 - 使用了
almost
crate。有关详细信息,请参阅almost::zero
文档。
- 有一个仅包含调试断言的版本:
-
chek::not_almost_zero!(a)
:类似于assert!(!almost::zero(a))
,但在失败时具有更好的输出。- 有一个仅包含调试断言的版本:
chek::debug_not_almost_zero!
。 - 使用了
almost
crate。有关详细信息,请参阅almost::zero
文档。
- 有一个仅包含调试断言的版本:
-
chek::almost_equal!(a, b)
:等同于assert!(almost::equal(a, b))
,但在失败时具有更好的输出。- 重要:如果
a
或b
是硬编码的常量零,则不要使用!相反,使用chek::almost_zero!(v)
。 - 有一个仅包含调试断言的版本:
chek::debug_almost_equal!
。 - 使用了
almost
crate。有关详细信息,请参阅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!
。 - 使用了
almost
crate。有关详细信息,请参阅almost::equal
文档。
- 重要:如果
-
chek::almost_zero_with_tolerance!(a)
:类似于assert!(almost::zero_with_tolerance(a, b, tol))
,但在失败时提供更好的输出。- 提供仅包含调试断言的版本:
chek::debug_almost_zero_with_tolerance!
。 - 使用了
almost
crate。有关详细信息,请参阅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!
。 - 使用了
almost
crate。有关详细信息,请参阅almost::zero_with_tolerance
文档。
- 提供仅包含调试断言的版本:
-
chek::debug_unreachable_unchecked!()
:不安全。类似于std::hint::unreachable_unchecked
,但在调试构建中如果触发则会导致恐慌。 -
chek::debug_unreachable!()
:与宏unreachable!
等效,但在发布构建中会被替换为空操作。
许可证
依赖关系
~32KB