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 日 |
2467 在 Rust 模式 中
每月下载量 576
在 11 个 crate(5 个直接) 中使用
145KB
3K SLoC
derive-ex
改进版的宏,用于实现标准库中定义的特质。
文档
有关详细信息,请参阅 #[derive_ex]
文档。
与标准 derive 宏的差异
- 自动生成的特质界限更智能。
- 您可以手动指定特质界限。
- 您可以指定每个字段的默认值。
- 您可以指定每个字段的比较方法。
- 您可以使用
Debug
的派生来指定忽略的字段。 - 支持 derive
Clone::clone_from
。 - 支持 derive 运算符。 (
Add
、AddAssign
、Not
、Deref
等.)
支持的特质
Copy
Clone
Debug
Default
Ord
、PartialOrd
、Eq
、PartialEq
、Hash
- 运算符
- 类似 Add 的运算符 (
Add
、Sub
、Mul
、Shl
等.) - 类似 AddAssign 的运算符 (
AddAssign
、SubAssign
、MulAssign
、ShlAssign
等.) - 类似 Not 的运算符 (
Not
、Neg
) Deref
、DerefMut
- 类似 Add 的运算符 (
不支持的特质
以下特质不受支持,因为存在更合适的 crate。
特质 | crate |
---|---|
Display 、FromStr |
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