1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
//! Uses serde's `Option<T>` handling to let you easily specify defaults for all fields at once //! by implementing `Default`. //! //! # Panics //! //! Will panic at compile time if you use `#[derive(DeserializePiecewiseDefault)]` on a struct //! with unnamed fields, a struct that does not implement `Default`, or an enum. //! //! # Examples //! //! ``` //! use serde::Deserialize; //! use serde_piecewise_default::DeserializePiecewiseDefault; //! //! #[derive(DeserializePiecewiseDefault, PartialEq, Eq, Debug)] //! struct Example { //! value: u8, //! enabled: bool, //! } //! //! impl Default for Example { //! fn default() -> Self { //! Example { //! value: 20, //! enabled: true, //! } //! } //! } //! //! let data: Example = serde_json::from_str(r#"{"value": 8}"#).unwrap(); //! assert_eq!(data, Example { value: 8, enabled: true }); //! let data: Example = serde_json::from_str(r#"{"enabled": false}"#).unwrap(); //! assert_eq!(data, Example { value: 20, enabled: false }); //! let data: Example = serde_json::from_str("{}").unwrap(); //! assert_eq!(data, Example { value: 20, enabled: true }); //! ``` extern crate serde; extern crate serde_piecewise_default_derive; pub use serde_piecewise_default_derive::DeserializePiecewiseDefault;