use serde::Deserialize; #[test] fn test() { #[derive(Deserialize, Eq, PartialEq, Debug)] struct Container { a: A, } #[derive(Deserialize, Eq, PartialEq, Debug)] struct A { #[serde(default)] b: B, } #[derive(Deserialize, serde_derive_default::Default, Eq, PartialEq, Debug)] struct B { #[serde(default = "true_fn")] c: bool, #[serde(rename = "e", default = "true_fn")] d: bool, } fn true_fn() -> bool { true } let container1 = serde_yaml::from_str::("a: {}").unwrap(); let container2 = serde_yaml::from_str::("a: {b: {}}").unwrap(); assert_eq!(container1, container2); }