#trait-object #eq #dyn #no-alloc

no-std dyn-eq

测试特质对象的相等性

3个版本

0.1.3 2023年7月20日
0.1.2 2023年2月17日
0.1.1 2023年2月17日
0.1.0 2023年2月16日

1236Rust模式

Download history 373/week @ 2024-03-13 286/week @ 2024-03-20 228/week @ 2024-03-27 188/week @ 2024-04-03 307/week @ 2024-04-10 293/week @ 2024-04-17 320/week @ 2024-04-24 266/week @ 2024-05-01 362/week @ 2024-05-08 333/week @ 2024-05-15 264/week @ 2024-05-22 242/week @ 2024-05-29 258/week @ 2024-06-05 335/week @ 2024-06-12 400/week @ 2024-06-19 337/week @ 2024-06-26

1,376 每月下载量
bevy_mod_static_inventory 中使用

MPL-2.0 许可证

13KB
123

测试特质对象的相等性

github crates.io doc.rs license build passively-maintained

此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>
}

无运行时依赖

功能