3个版本
0.1.3 | 2023年7月20日 |
---|---|
0.1.2 | 2023年2月17日 |
0.1.1 |
|
0.1.0 | 2023年2月16日 |
1236 在 Rust模式
1,376 每月下载量
在 bevy_mod_static_inventory 中使用
13KB
123 行
测试特质对象的相等性
此crate提供了一个DynEq
特质,允许比较特质对象。如果两个对象是不同结构体的实例,它们始终不相等。如果它们是同一结构体的实例,将使用该结构体的Eq
。
示例
use dyn_eq::DynEq;
trait MyTrait: DynEq {}
dyn_eq::eq_trait_object!(MyTrait);
impl MyTrait for u8 {}
impl MyTrait for u16 {}
let a: &dyn MyTrait = &5u8;
let a_bis: &dyn MyTrait = &5u8;
let b: &dyn MyTrait = &10u8;
let c: &dyn MyTrait = &5u16;
let d: &dyn MyTrait = &10u16;
// Same type, same value
assert!(a == a_bis);
// Same type, different value
assert!(a != b);
// Different type, different value
assert!(a != d);
// Different type, same value
// Even if the value is the same, the fact that it's a diffrent type means it's not equal
assert!(a != c);
// Now data structures containing Box<dyn MyTrait> can derive Eq.
#[derive(PartialEq, Eq)]
struct Container {
field: Box<dyn MyTrait>
}