1 个不稳定版本

0.1.0 2022 年 5 月 21 日

47#u32

29 每月下载量

MIT 许可证

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