Expand description
§assert_matches2
A replacement for the assert_matches crate, providing an assert_matches!
macro without support for if guards and the extra arm, but bringing any
names introduced in the pattern into scope for after the macro invocation, by
expanding to let else.
§Example
use assert_matches2::assert_matches;
/// Basic usage
let var = serde_json::Value::from("a string");
assert_matches!(var, serde_json::Value::String(s));
assert_eq!(s, "a string");
// More complex usages
#[derive(Debug)]
struct Foo {
bar: Bar,
}
#[derive(Debug)]
enum Bar {
V1(u8),
V2 { field: String },
}
let var = Foo { bar: Bar::V1(10) };
assert_matches!(var, Foo { bar: ref r @ Bar::V1(int) });
assert_matches!(r, Bar::V1(_));
assert_eq!(int, 10);
let var = Foo { bar: Bar::V2 { field: "test".to_owned() } };
assert_matches!(var, Foo { bar: Bar::V2 { field: rename } });
assert_eq!(rename, "test");Macros§
- assert_
let - Alternative form of
assert_matches!where the pattern comes first. - assert_
matches - Assert that the given expression matches the given pattern, and introduce any bindings from the pattern into the surrounding scope.