10个版本 (6个重大变更)
0.7.1 | 2023年4月24日 |
---|---|
0.6.0 | 2019年12月13日 |
0.5.2 | 2019年4月13日 |
0.5.1 | 2019年3月1日 |
0.2.0 | 2017年8月21日 |
#37 in 过程宏
655,642 每月下载量
在 316 个crate中使用了(109个直接使用)
15KB
251 行
Rust SmartDefault
用于自动实现带有自定义默认值的 Default
特性的自定义 derive
use smart_default::SmartDefault;
#[derive(SmartDefault)]
enum Foo {
Bar,
#[default]
Baz {
#[default = 12]
a: i32,
b: i32,
#[default(Some(Default::default()))]
c: Option<i32>,
#[default(_code = "vec![1, 2, 3]")]
d: Vec<u32>,
#[default = "four"]
e: String,
},
Qux(i32),
}
assert!(Foo::default() == Foo::Baz {
a: 12,
b: 0,
c: Some(0),
d: vec![1, 2, 3],
e: "four".to_owned(),
});
需要 Rust 1.30+(用于属性中的非字符串值)
依赖项
~285–740KB
~18K SLoC