serde_individual_default

Attribute Macro serde_individual_default 

Source
#[serde_individual_default]
Expand description

This procedural macro create default deserealization functions for each structure attribute based on std::Default impl.

It applies default values only for fields missing from the deserialized input.

ยงExample

use serde::Deserialize;
use your_proc_macro_crate::serde_individual_default;

#[derive(Deserialize, Getters)]
#[serde_individual_default]
struct Example {
    #[getter(skip)]
    test_1: i64,
    test_2: i64,
    test_3: String,
}
impl Default for Example {
    fn default() -> Self {
        Example {
            test_1: 3942,
            test_2: 42390,
            test_3: "a".to_string(),
        }
    }
}

let json_data_1 = serde_json::json!({
    "test_1": 500,
    "test_2": 100
});
let example_struct_1: Example = serde_json::from_value(json_data_1).unwrap();
assert_eq!(example_struct_1.test_1, 500);
assert_eq!(example_struct_1.test_2, 100);
assert_eq!(example_struct_1.test_3, "a".to_string());