2 unstable releases

0.2.0 Dec 9, 2019
0.1.0 Dec 7, 2019

#1328 in Procedural macros

Download history 38/week @ 2023-11-20 19/week @ 2023-11-27 12/week @ 2023-12-04 40/week @ 2023-12-11 30/week @ 2023-12-18 25/week @ 2023-12-25 51/week @ 2024-01-01 72/week @ 2024-01-08 42/week @ 2024-01-15 48/week @ 2024-01-22 27/week @ 2024-01-29 56/week @ 2024-02-05 33/week @ 2024-02-12 54/week @ 2024-02-19 95/week @ 2024-02-26 73/week @ 2024-03-04

259 downloads per month
Used in 3 crates

Custom license

11KB
149 lines

#[derive(Defaults)]

A better Default derive macro.

Crate

Examples:

You can provide default value for a non-default field.

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

You can also provide a different default value of an already default field.

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

You can even provide default value of enums:

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

But what about variants with data?

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

Dependencies

~1.5MB
~34K SLoC