Macro std::assert_matches::debug_assert_matches [−][src]
macro_rules! debug_assert_matches { ($($arg:tt)*) => { ... }; }
Expand description
断言表达式匹配任何给定的模式。
像在 match
表达式中一样,可以在模式后跟 if
和可以访问由模式绑定的名称的保护表达式。
在 panic 时,这个宏将打印表达式的值及其调试表示。
与 assert_matches!
不同,debug_assert_matches!
语句默认仅在非优化构建中启用。
除非将 -C debug-assertions
传递给编译器,否则优化的构建将不会执行 debug_assert_matches!
语句。
这使得 debug_assert_matches!
可用于在发布版本中出现的检查成本太高,但在开发过程中可能会有所帮助。
扩展 debug_assert_matches!
的结果总是经过类型检查。
Examples
#![feature(assert_matches)] use std::assert_matches::debug_assert_matches; let a = 1u32.checked_add(2); let b = 1u32.checked_sub(2); debug_assert_matches!(a, Some(_)); debug_assert_matches!(b, None); let c = Ok("abc".to_string()); debug_assert_matches!(c, Ok(x) | Err(x) if x.len() < 100);Run