4 个稳定版本

1.0.3 2023 年 1 月 7 日
1.0.2 2021 年 4 月 18 日
1.0.0 2021 年 3 月 21 日

#2011Rust 模式

每月 下载 32
ptth_server 中使用

AGPL-3.0

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> 应该是真的。

无运行时依赖