1 个不稳定版本
0.1.0 | 2024年6月6日 |
---|
#699 在 开发工具 中
每月 1,302 次下载
7KB
99 行
cmp
cmp
是一个 Rust 包,它提供了一个宏,用于比较结构体中的字段,这在编写 assert!
测试时特别有用。
用法
要使用此包,将以下内容添加到您的 Cargo.toml
[dependencies]
cmp = "0.1.0"
然后,在您的 Rust 文件中
use cmp::compare_structs;
compare_structs!
compare_structs!
宏比较两个结构体中指定的字段。如果字段不匹配,宏将引发 panic 并输出不匹配的字段。
示例
use cmp::compare_structs;
struct A<'a> {
a: i32,
b: &'a str,
c: [(f64, f32); 2],
}
struct B<'a> {
a: i32,
b: &'a str,
c: [(f64, f32); 2],
}
let struct_a = A {
a: 10,
b: "str",
c: [(1.0, 1.0), (2.0, 2.0)],
};
let struct_b = B {
a: 10,
b: "diff str",
c: [(1.0, 1.0), (2.0, 2.0)],
};
compare_structs!(struct_a, struct_b, a, c);
在这个示例中,compare_structs!
宏比较了 struct_a
和 struct_b
中的 a
和 c
字段。如果不匹配,宏将引发 panic 并输出不匹配的字段。
输出
compare_structs!
宏的输出会单独列出结构体中不匹配的字段。例如
thread 'tests::compare_different_structs' panicked at src/lib.rs:135:9:
c: [
(
1.0,
1.0,
),
(
2.0,
3.0,
),
] != [
(
1.0,
1.0,
),
(
2.0,
2.0,
),
]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
在这个输出中,两个结构体的 c
字段不匹配,宏输出了不同的值。