3 个版本
0.1.2 | 2023 年 11 月 1 日 |
---|---|
0.1.1 | 2023 年 10 月 23 日 |
0.1.0 | 2023 年 6 月 7 日 |
#367 在 Rust 模式
2,986 每月下载次数
用于 15 个 包(14 个直接使用)
8KB
assert_matches2
assert_matches crate 的替代品,提供了一个 assert_matches!
宏,没有对 if
守卫和额外分支的支持,但在宏调用之后通过展开到 let else
将任何在模式中引入的名称引入作用域。
示例
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");