4 个稳定版本
1.0.3 | 2023 年 1 月 7 日 |
---|---|
1.0.2 | 2021 年 4 月 18 日 |
1.0.0 | 2021 年 3 月 21 日 |
#2011 在 Rust 模式
每月 下载 32 次
在 ptth_server 中使用
8KB
122 行
Always-Equal
Always-Equal 允许您将 PartialEq
实现包裹在无法比较的东西周围,比如一个 File
。
要使用 Always-Equal,将这两个条件 use
语句放在您的模块中
#[cfg (test)]
use always_equal::test::AlwaysEqual;
#[cfg (not (test))]
use always_equal::prod::AlwaysEqual;
然后在需要 PartialEq 但无法实现它的任何东西周围包裹 AlwaysEqual
use std::fs::File;
use always_equal::test::AlwaysEqual;
#[derive (Debug, PartialEq)]
pub struct MyStruct {
pub b: bool,
pub i: i64,
pub file: AlwaysEqual <File>,
}
// In test code, you can create an empty wrapper using
// `testing_blank`, which is equal to any other wrapper:
let expected = MyStruct {
b: true,
i: 0,
file: AlwaysEqual::testing_blank (),
};
# let my_file = File::open ("Cargo.toml").unwrap ();
let actual = MyStruct {
b: true,
i: 0,
file: my_file.into (),
};
assert_eq! (expected, actual);
这是在测试模式下使用 Option
实现的。在生产模式下,包装器永远不会等于任何其他包装器,并且 Option
被删除,以便 sizeof::<AlwaysEqual <T>> () == sizeof::<T>
应该是真的。