# DefaultFields
Simple Rust derive macro that, for each field in the struct, creates a function that returns its default value (requires the struct to extend `Default` trait). This is useful if you want to parse struct from JSON and fill in the missing elements with defaults. For example, the following code:
```rust
#[derive(Deserialize)]
struct TestObj {
#[serde(default = "TestObj::get_default_field1")]
pub field1: bool,
#[serde(default = "TestObj::get_default_field2")]
pub field2: u64,
#[serde(default = "TestObj::get_default_field3")]
pub field3: String,
}
impl TestObj {
pub fn get_default_field1() -> bool {
true
}
pub fn get_default_field2() -> u64 {
100u64
}
pub fn get_default_field3() -> String {
String::from("test_str")
}
}
```
can be simplified to:
```rust
#[derive(Deserialize, DefaultFields)]
struct TestObj {
#[serde(default = "TestObj::get_default_field1")]
pub field1: bool,
#[serde(default = "TestObj::get_default_field2")]
pub field2: u64,
#[serde(default = "TestObj::get_default_field3")]
pub field3: String,
}
impl Default for TestObj {
fn default -> Self {
Self {
field1: true,
field2: 100u64,
field3: String::from("test_str"),
}
}
}
```