Merge two HashMaps adding the values


Given


{
    "a" : 1,
    "b" : 2,
}

{
    "a" : 3,
    "c" : 5,
}

Adding them together should result in


{
    "a" : 4,
    "b" : 2,
    "c" : 5,
}


examples/hashes/total-values/src/main.rs
use std::collections::HashMap;
fn main() {
    let a = HashMap::from([("apple", 1), ("banana", 1)]);
    let b = HashMap::from([("apple", 2), ("peach", 2), ("grape", 2)]);

    let mut total: HashMap<&str, i32> = HashMap::new();

    for (key, value) in a.iter() {
        *total.entry(key).or_insert(0) += value;
    }
    println!("{:#?}", total);
    assert_eq!(total, a);

    for (key, value) in b.iter() {
        *total.entry(key).or_insert(0) += value;
    }
    println!("{:#?}", total);

    let expected_total = HashMap::from([("apple", 3), ("peach", 2), ("grape", 2), ("banana", 1)]);
    assert_eq!(total, expected_total);
}

{
    "banana": 1,
    "apple": 1,
}
{
    "banana": 1,
    "peach": 2,
    "grape": 2,
    "apple": 3,
}