#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 • Rust 包仓库 124326/week @ 2024-03-14 • Rust 包仓库 128104/week @ 2024-03-21 • Rust 包仓库 130619/week @ 2024-03-28 • Rust 包仓库 127023/week @ 2024-04-04 • Rust 包仓库 132040/week @ 2024-04-11 • Rust 包仓库 144560/week @ 2024-04-18 • Rust 包仓库 139069/week @ 2024-04-25 • Rust 包仓库 140269/week @ 2024-05-02 • Rust 包仓库 136806/week @ 2024-05-09 • Rust 包仓库 164016/week @ 2024-05-16 • Rust 包仓库 157919/week @ 2024-05-23 • Rust 包仓库 168218/week @ 2024-05-30 • Rust 包仓库 149158/week @ 2024-06-06 • Rust 包仓库 164288/week @ 2024-06-13 • Rust 包仓库 166426/week @ 2024-06-20 • Rust 包仓库 142043/week @ 2024-06-27 • Rust 包仓库

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