当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust debug_assert_matches用法及代码示例


本文简要介绍rust语言中 Macro core::assert_matches::debug_assert_matches 的用法。

用法

pub macro debug_assert_matches($($arg : tt) *) {
    ...
}

断言一个表达式匹配任何给定的模式。

就像在match 表达式中一样,该模式可以选择性地后跟if 和一个可以访问由该模式绑定的名称的保护表达式。

Panics时,此宏将打印表达式的值及其调试表示。

assert_matches! 不同,默认情况下 debug_assert_matches! 语句仅在非优化构建中启用。除非将 -C debug-assertions 传递给编译器,否则优化的构建将不会执行 debug_assert_matches! 语句。这使得debug_assert_matches! 对于那些成本太高而无法在发布版本中出现但在开发过程中可能会有所帮助的检查很有用。扩展debug_assert_matches! 的结果总是类型检查。

例子

#![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);

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Macro core::assert_matches::debug_assert_matches。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。