pub macro assert_matches {
    ($left:expr, $(|)? $( $pattern:pat_param )|+ $( if $guard: expr )? $(,)?) => { ... },
    ($left:expr, $(|)? $( $pattern:pat_param )|+ $( if $guard: expr )?, $($arg:tt)+) => { ... },
}
🔬This is a nightly-only experimental API. (assert_matches #82775)
Expand description

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

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

在 panic 时,这个宏将打印表达式的值及其调试表示。

assert! 一样,此宏具有第二种形式,可以在其中提供自定义 panic 消息。

Examples

#![feature(assert_matches)]

use std::assert_matches::assert_matches;

let a = 1u32.checked_add(2);
let b = 1u32.checked_sub(2);
assert_matches!(a, Some(_));
assert_matches!(b, None);

let c = Ok("abc".to_string());
assert_matches!(c, Ok(x) | Err(x) if x.len() < 100);
Run