use crate::prelude::*; pub fn read_items (contents: &str, map: &mut HashMap) -> usize { let Ok(json): std::result::Result = serde_json::from_str(&contents) else { error!("Can't read Value from contents"); return 0 }; let Value::Array(list) = json else { error!("Value isn't Array, skipping"); return 0 }; let start = map.len(); for t in list.into_iter().map(Item::from_json).flatten() { if map.contains_key(&t.name) { let entry = map.get_mut(&t.name).unwrap(); entry.weight = entry.weight.or(t.weight); entry.rest.extend(t.rest); } else { map.insert(t.name.clone(), t); } } map.len() - start }