2个版本
0.1.1 | 2020年2月9日 |
---|---|
0.1.0 | 2020年2月8日 |
#139 in #issue
3KB
is-same
此crate提供IsSame特质,该特质专门用于比较已转换的不可变数据。此特质在一些重要方面与PartialEq不同
- 浮点值通过它们的位模式进行比较,防止NaN值使数据结构永久性地比较为不相等。这还允许您检测值从
-0.0
变为0.0
。 - 使用引用等价性来使比较更高效。该库假设Rc和Arc的内容是不可变的且不能改变,因此它们只需通过它们的指针进行比较。
此特质为许多标准库类型提供了开箱即用的实现,但如果缺少任何类型,请随时提交问题或贡献PR。有关错误消息或其他可用性问题(包括过程宏)的问题也欢迎!
显式未为此特质实现内部可变类型(Cell、RefCell、AtomicUSize、Mutex等),因为这会使基于引用等价性的假设变得不安全。如果将来出现问题,可能会进行更改。
安装
将以下内容添加到您的Cargo.toml
is-same = "0.1"
is-same-derive = "0.1"
用法
use is_same::IsSame;
use is_same_derive::IsSame;
#[derive(IsSame)]
struct MyStruct {
text: String,
foo: usize,
bar: char,
}
fn diff(left: &MyStruct, right: &MyStruct) {
println!("is_same? {}", left.is_same(right));
}
依赖
~1.5MB
~34K SLoC