1 个不稳定版本
0.1.0 | 2022 年 5 月 21 日 |
---|
47 在 #u32
29 每月下载量
7KB
83 行
sensible
这是一个用于生成 Default
实现的可配置 derive 宏的 crate。Rust 的 std::default
模块提供了一个 derive 实现,但对于结构体,它要求
- 结构体上的每个成员都实现
Default
。 - 结构体上的每个成员都必须使用
Default
实现的。
这在许多情况下都很好,但考虑一下这种情况:一个大的结构体,只有一个或两个字段应该默认为与类型 Default
实现不同的值:现在你必须实现整个结构体。
sensible
提供了一个可配置的 derive 宏,允许为某些字段提供替代的默认值。
示例
use sensible::Default;
#[derive(Default)]
struct Foo {
a: u32, // default value: 0
#[default(42)]
b: u32, // default value: 42
}
依赖关系
~2MB
~42K SLoC