1 个不稳定版本

0.1.0 2019年6月25日

#205 in 无标准库

CC0 许可证

59KB
739

chek:用于检查的宏。

Docs

这是一个类似于 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)。注意,即使提供了这个,ab 仍将被记录,因此不需要手动执行。

  • chek::less!(a, b):等价于 assert!(a < b),但在失败时具有更好的输出

    • 还有一个仅适用于 debug_assertions 的版本: chek::debug_less!
    • 以下提供了一些别名:用于仅调试断言版本的代码:chek::lt!chek::debug_lt!
  • 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::not_almost_zero!(a):类似于 assert!(!almost::zero(a)),但在失败时具有更好的输出。

  • chek::almost_equal!(a, b):等同于 assert!(almost::equal(a, b)),但在失败时具有更好的输出。

    • 重要:如果 ab 是硬编码的常量零,则不要使用!相反,使用 chek::almost_zero!(v)
    • 有一个仅包含调试断言的版本:chek::debug_almost_equal!
    • 使用了 almost crate。有关详细信息,请参阅 almost::equal 文档
  • chek::not_almost_equal!(a, b):等同于 assert!(!almost::equal(a, b)),但在失败时具有更好的输出。

    • 重要:如果 ab 是硬编码的常量零,则不要使用!相反,使用 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::not_almost_zero_with_tolerance!(a):类似于 assert!(!almost::zero_with_tolerance(a, b, tol)),但在失败时提供更好的输出。

  • chek::debug_unreachable_unchecked!():不安全。类似于std::hint::unreachable_unchecked,但在调试构建中如果触发则会导致恐慌。

  • chek::debug_unreachable!():与宏 unreachable! 等效,但在发布构建中会被替换为空操作。

许可证

CC0(公共领域).

依赖关系

~32KB