Skip to main content

Default

Derive Macro Default 

Source
#[derive(Default)]
{
    // Attributes available to this derive:
    #[default]
}
Expand description

Implements Default for a struct, using Default::default() for each field unless a #[default(...)] attribute provides a custom expression.

ยงExample

#[derive(mkutils_macros::Default)]
struct MyStruct {
    name: String,
    #[default(42)]
    count: i32,
    #[default(std::vec![1, 2, 3])]
    items: Vec<i32>,
}

// adds

// impl Default for MyStruct {
//     fn default() -> Self {
//         Self {
//             name: ::core::default::Default::default(),
//             count: 42,
//             items: std::vec![1, 2, 3],
//         }
//     }
// }

// as can be seen in

let default = MyStruct::default();

std::assert_eq!(default.name, "");
std::assert_eq!(default.count, 42);
std::assert_eq!(default.items, std::vec![1, 2, 3]);