Crates.io | smart-default |
lib.rs | smart-default |
version | 0.7.1 |
source | src |
created_at | 2017-08-18 14:13:50.175894 |
updated_at | 2023-04-24 15:51:20.102795 |
description | Rust custom-derive macro for Default with more control on the fields |
homepage | |
repository | https://github.com/idanarye/rust-smart-default |
max_upload_size | |
id | 28016 |
size | 26,588 |
Custom derive for automatically implementing the Default
trait with customized default values:
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(),
});
Requires Rust 1.30+ (for non-string values in attributes)