Uses serde's Option<T>
handling to let you easily specify defaults for all fields at once
by implementing Default
.
```rust use serde::Deserialize; use serdepiecewisedefault::DeserializePiecewiseDefault;
struct Example { value: u8, enabled: bool, }
impl Default for Example { fn default() -> Self { Example { value: 20, enabled: true, } } }
let data: Example = serdejson::fromstr(r#"{"value": 8}"#).unwrap(); asserteq!(data, Example { value: 8, enabled: true }); let data: Example = serdejson::fromstr(r#"{"enabled": false}"#).unwrap(); asserteq!(data, Example { value: 20, enabled: false }); let data: Example = serdejson::fromstr("{}").unwrap(); assert_eq!(data, Example { value: 20, enabled: true }); ```
```rust
struct Example {
item1: i8,
item2: String,
}
will expand to
rust
struct Example {
item1: i8,
item2: String,
}
struct OptionExample {
item1: Option
impl<'de> Deserialize<'de> for Example {
fn deserialize