#default #macro-derive #better #enums

defaults

更好的 Default derive 宏

2个不稳定版本

0.2.0 2019年12月9日
0.1.0 2019年12月7日

#1159 in 过程宏

Download history 71/week @ 2024-04-12 57/week @ 2024-04-19 120/week @ 2024-04-26 88/week @ 2024-05-03 99/week @ 2024-05-10 50/week @ 2024-05-17 68/week @ 2024-05-24 331/week @ 2024-05-31 58/week @ 2024-06-07 52/week @ 2024-06-14 61/week @ 2024-06-21 39/week @ 2024-06-28 54/week @ 2024-07-05 139/week @ 2024-07-12 128/week @ 2024-07-19 58/week @ 2024-07-26

每月379次下载
3 crates 中使用

自定义许可证

11KB
149 代码行

#[derive(Defaults)]

更好的 Default derive 宏。

Crate

示例:

您可以为非默认字段提供默认值。

#[derive(Defaults)]
pub struct Event {
    id: usize,
    name: String,
    #[def = "Instant::now()"]
    time: Instant,
}

您还可以为已默认的字段提供不同的默认值。

#[derive(Defaults)]
pub struct Event {
    #[def = "4"]
    id: usize,
    name: String,
    #[def = "Instant::now()"]
    time: Instant,
}

您甚至可以为枚举提供默认值

#[derive(Defaults)]
#[def = "A"]
pub struct Classroom {
    A,
    B,
    C
}

但是,对于带有数据的变体怎么办呢?

#[derive(Defaults)]
#[def = "A(100)"]
pub struct SomeEnum {
    A(usize),
    B { x: usize, y: usize },
    C
}

依赖关系

~1.5MB
~35K SLoC