Expand description
This crate provides a wrapper around HashMap with a custom implementation of
Deserialize which skips any field which does not conform to the structure of the HashMap,
rather than throwing an error.
This liberal approach to deserializing data is helpful if attempting to extract a subset of information being passed in. For example a JSON blob with a mixed structure which cannot be controlled, but a specific set of entries is of interest.
§Example
use serde_json;
use skippable_map::SkippableMap;
use std::collections::HashMap;
let json = r#"{ "string": "b", "number": 1, "other_number": 2, "negative_number": -44}"#;
// SkippableMap<String, u64> will skip the (String, String) entry, and the negative number
let just_numbers: SkippableMap<String, u64> = serde_json::from_str(json).unwrap();
let hm = HashMap::from([
(String::from("number"), 1_u64),
(String::from("other_number"), 2_u64),
]);
assert_eq!(just_numbers.as_ref(), &hm);
assert_eq!(just_numbers.0, hm);
// Consumes just_numbers to produce inner HashMap
assert_eq!(just_numbers.inner(), hm);Structs§
- Skippable
Map - The central struct of the library: this is a wrapper around
HashMapwith a custom implementation ofDeserialize. The implementation goes through the data to be deserialized, and skips any field which does not conform to theHashMap<K,V>format.