#default-value #default #macro #traits #macro-derive #fields #enums

macro smart-default

Rust自定义 derive 宏,用于对字段进行更多控制以实现 Default 特性

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 过程宏

Download history 124326/week @ 2024-03-14 128104/week @ 2024-03-21 130619/week @ 2024-03-28 127023/week @ 2024-04-04 132040/week @ 2024-04-11 144560/week @ 2024-04-18 139069/week @ 2024-04-25 140269/week @ 2024-05-02 136806/week @ 2024-05-09 164016/week @ 2024-05-16 157919/week @ 2024-05-23 168218/week @ 2024-05-30 149158/week @ 2024-06-06 164288/week @ 2024-06-13 166426/week @ 2024-06-20 142043/week @ 2024-06-27

655,642 每月下载量
316 个crate中使用了(109个直接使用)

MIT 许可证

15KB
251

Build Status Latest Version Rust Documentation

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