2个版本
0.1.1 | 2020年3月10日 |
---|---|
0.1.0 | 2020年3月10日 |
#896 in 进程宏
16KB
195 行
multi_eq
multi_eq
是一个用于创建自定义相等性特质派生宏的宏库。
/// Custom comparison trait `CustomEq` with a method `custom_eq`
multi_eq_make_trait!(CustomEq, custom_eq);
#[derive(CustomEq)]
struct MyStruct {
// Use `PartialEq` to compare this field
#[custom_eq(cmp = "eq")]
a: u32,
// Ignore value of this field when checking equality
#[custom_eq(ignore)]
b: bool,
}
更多信息,请参阅文档。
lib.rs
:
multi_eq
multi_eq
是一个用于创建自定义相等性派生宏的宏库。
描述
此crate导出两个宏: multi_eq_make_trait!()
和 multi_eq_make_derive!()
。第一个用于创建自定义相等性特质。第二个用于创建自定义相等性特质的派生宏。由于派生宏只能由具有proc-macro
crate类型的crate导出,因此该库的典型用法是多crate项目:一个用于派生宏的proc-macro
crate,以及一个导入派生宏的主crate。
示例
文件树
custom-eq-example
├── Cargo.lock
├── Cargo.toml
├── custom-eq-derive
│ ├── Cargo.lock
│ ├── Cargo.toml
│ └── src
│ └── lib.rs
└── src
└── lib.rs
custom-eq-example/custom-eq-derive/Cargo.toml
# ...
[lib]
proc-macro = true
# ...
custom-eq-example/custom-eq-derive/src/lib.rs
use multi_eq::*;
/// Derive macro for a comparison trait `CustomEq` with a method `custom_eq`
multi_eq_make_derive!(pub, CustomEq, custom_eq);
custom-eq-example/Cargo.toml
# ...
[dependencies.custom-eq-derive]
path = "custom-eq-derive"
# ...
custom-eq-example/src/lib.rs
use multi_eq::*;
use custom_eq_derive::*;
/// Custom comparison trait `CustomEq` with a method `custom_eq`
multi_eq_make_trait!(CustomEq, custom_eq);
#[derive(CustomEq)]
struct MyStruct {
// Use `PartialEq` to compare this field
#[custom_eq(cmp = "eq")]
a: u32,
// Ignore value of this field when checking equality
#[custom_eq(ignore)]
b: bool,
}
依赖项
~1.5MB
~36K SLoC