ошибку если ключ есть в обоих?
fn try_append(a: HashMap, b: HashMap) -> Result<HashMap, ()> { b.into_iter().try_fold(a, |mut map, (k, v)| { match map.entry(key) { Occupied(_) => return Err(()), Vacant(vac) => { vac.insert(v); Ok(map) } }) }
Можно ещё вот так сделать, если конфликты требуется получить и обработать use std::collections::HashMap; use std::hash::Hash; pub fn merge_unique<K: Eq + Hash, V>( this: &mut HashMap<K, V>, other: impl IntoIterator<Item = (K, V)>, ) -> Vec<((K, V), (K, V))> { other.into_iter().filter_map(|o| { match this.remove_entry(&o.0) { Some(t) => Some((t, o)), None => this.insert(o.0, o.1).map(|_| unreachable!()), } }) .collect() }
Обсуждают сегодня