Crate serde_ignored [−] [src]
#[macro_use] extern crate serde_derive; extern crate serde; extern crate serde_json; extern crate serde_ignored; use std::collections::{BTreeSet as Set, BTreeMap as Map}; #[derive(Debug, PartialEq, Deserialize)] struct Package { name: String, dependencies: Map<String, Dependency>, } #[derive(Debug, PartialEq, Deserialize)] struct Dependency { version: String, } let j = r#"{ "name": "demo", "dependencies": { "serde": { "version": "0.9", "typo1": "" } }, "typo2": { "inner": "" }, "typo3": {} }"#; // Some Deserializer. let jd = &mut serde_json::Deserializer::from_str(j); // We will build a set of paths to the unused elements. let mut unused = Set::new(); let p: Package = serde_ignored::deserialize(jd, |path| { unused.insert(path.to_string()); })?; assert_eq!(p, Package { name: "demo".to_owned(), dependencies: { let mut map = Map::new(); map.insert("serde".to_owned(), Dependency { version: "0.9".to_owned(), }); map }, }); assert_eq!(unused, { let mut expected = Set::new(); expected.insert("dependencies.serde.typo1".to_owned()); expected.insert("typo2".to_owned()); expected.insert("typo3".to_owned()); expected });
Structs
Deserializer |
Deserializer adapter that invokes a callback with the path to every unused field of the input. |
Enums
Path |
Path to the current value in the input, like |
Functions
deserialize |
Entry point. See crate documentation for an example. |