#bounds #traits #debugging #macro-derive #standard #clone #default

derive-ex

改进版的宏,用于实现标准库中定义的特质

9 个版本

0.1.8 2024 年 5 月 5 日
0.1.7 2023 年 10 月 2 日
0.1.6 2023 年 9 月 25 日
0.1.5 2023 年 8 月 25 日
0.1.1 2022 年 5 月 5 日

2467Rust 模式

Download history 88/week @ 2024-04-24 279/week @ 2024-05-01 114/week @ 2024-05-08 162/week @ 2024-05-15 200/week @ 2024-05-22 259/week @ 2024-05-29 251/week @ 2024-06-05 238/week @ 2024-06-12 202/week @ 2024-06-19 110/week @ 2024-06-26 145/week @ 2024-07-03 120/week @ 2024-07-10 140/week @ 2024-07-17 125/week @ 2024-07-24 196/week @ 2024-07-31 97/week @ 2024-08-07

每月下载量 576
11 个 crate(5 个直接) 中使用

MIT/Apache

145KB
3K SLoC

derive-ex

Crates.io Docs.rs Actions Status

改进版的宏,用于实现标准库中定义的特质。

文档

有关详细信息,请参阅 #[derive_ex] 文档

与标准 derive 宏的差异

  • 自动生成的特质界限更智能。
  • 您可以手动指定特质界限。
  • 您可以指定每个字段的默认值。
  • 您可以指定每个字段的比较方法。
  • 您可以使用 Debug 的派生来指定忽略的字段。
  • 支持 derive Clone::clone_from
  • 支持 derive 运算符。 (AddAddAssignNotDeref 等.)

支持的特质

  • Copy
  • Clone
  • Debug
  • Default
  • OrdPartialOrdEqPartialEqHash
  • 运算符
    • 类似 Add 的运算符 (AddSubMulShl 等.)
    • 类似 AddAssign 的运算符 (AddAssignSubAssignMulAssignShlAssign 等.)
    • 类似 Not 的运算符 (NotNeg)
    • DerefDerefMut

不支持的特质

以下特质不受支持,因为存在更合适的 crate。

特质 crate
DisplayFromStr parse-display
Error thiserror

安装

将以下内容添加到您的 Cargo.toml 中

[dependencies]
derive-ex = "0.1.7"

示例

use derive_ex::derive_ex;

#[derive(Eq, PartialEq, Debug)]
#[derive_ex(Add, AddAssign, Clone, Default)]
struct X {
    #[default(10)]
    a: u32,
}
assert_eq!(X { a: 1 } + X { a: 2 }, X { a: 3 });
assert_eq!(X::default(), X { a: 10 });

#[derive(Eq, PartialEq, Debug)]
#[derive_ex(Clone, Default)]
enum Y {
    A,
    #[default]
    B,
}
assert_eq!(Y::default(), Y::B);

许可证

本项目采用 Apache-2.0/MIT 双重许可证。请参阅两个 LICENSE-* 文件以获取详细信息。

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交以包含在该作品中的任何贡献,将按照上述方式双重许可,不附加任何额外条款或条件。

依赖项

~335–790KB
~18K SLoC