2 个版本
0.1.1 | 2023年12月1日 |
---|---|
0.1.0 | 2023年12月1日 |
2202 在 数据结构
9KB
75 行
skippable_map
此crate提供了一个围绕 HashMap
的包装器,并实现了自定义的 Deserialize
,它跳过任何不符合 HashMap
结构的字段,而不是抛出错误。
这种对数据解序列化的宽松方法,在尝试提取传递信息的一部分时非常有用。例如,一个具有混合结构的JSON blob无法控制,但对特定的条目集感兴趣。
示例
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);
依赖关系
~0.4–1MB
~24K SLoC