1个不稳定版本
0.1.0 | 2023年7月6日 |
---|
#42 in #partial-eq
23KB
338 行
免责声明
这是我发布的第一个crate,因此我对将其产品化还不是很熟悉。因此请谨慎使用此crate,欢迎反馈。
partial_eq_dyn_derive
要为具有特质对象字段的类型实现PartialEq特质,可以使用PartialEqDyn过程宏。实现需要具有特质对象的特质需要有AsAny和DynPartialEq作为超特质。对于这些特质,也存在AsAny和DynPartialEq过程宏。以下是一个示例
use partial_eq_dyn::{AsAny, DynPartialEq};
use partial_eq_dyn_derive::{AsAny, DynPartialEq, PartialEqDyn};
trait TestTrait: core::fmt::Debug + AsAny + DynPartialEq {}
#[derive(AsAny, DynPartialEq, PartialEq)]
struct TestTraitImplementor(i32);
impl TestTrait for TestTraitImplementor {}
#[derive(PartialEqDyn)]
struct TestStruct {
field1: i32,
field2: Box<i32>,
field3: Box<dyn TestTrait>,
}
或者如果类型实现了该特质本身
use partial_eq_dyn::{AsAny, DynPartialEq};
use partial_eq_dyn_derive::{AsAny, DynPartialEq, PartialEqDyn};
trait TestTrait: core::fmt::Debug + AsAny + DynPartialEq {}
#[derive(AsAny, DynPartialEq, PartialEqDyn)]
struct TestStruct {
field1: i32,
field2: Box<i32>,
field3: Option<dyn TestTrait>,
}
impl TestTrait for TestStruct {}
依赖项
~310–770KB
~18K SLoC