2个版本

0.1.1 2020年3月10日
0.1.0 2020年3月10日

#896 in 进程宏

MIT许可证

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