aex/src/utils/mod.rs
2025-09-11 10:27:57 +03:00

22 lines
719 B
Rust

use crate::prelude::*;
pub fn read_items (contents: &str, map: &mut HashMap<String, Item>) -> usize {
let Ok(json): std::result::Result<Value, _> = 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
}