Цикл по многомерным картам в Rust
Карту карт обходят двумя циклами. Внешний дает очередную внутреннюю карту, внутренний - ее пары. Числа из пар складывают, начиная с нуля. Порядок пар не обещан, сумма от него не зависит:
use std::collections::HashMap;
fn main() {
let map: HashMap<&str, HashMap<&str, i32>> = HashMap::from([
("a", HashMap::from([("x", 1), ("y", 2)])),
("b", HashMap::from([("x", 3), ("y", 4)])),
]);
let mut sum = 0;
for (_, inner) in &map {
for (_, val) in inner {
println!("{}", val);
sum += val;
}
}
println!("{}", sum); // выведет 10
}
Дана карта карт:
let map: HashMap<&str, HashMap<&str, i32>> = HashMap::from([
("a", HashMap::from([("x", 10), ("y", 20)])),
("b", HashMap::from([("x", 30), ("y", 40)])),
]);
Найдите сумму всех чисел и выведите ее.
Дана карта из трех уровней:
let map: HashMap<&str, HashMap<&str, HashMap<&str, i32>>> = HashMap::from([(
"g",
HashMap::from([("u", HashMap::from([("age", 20), ("year", 2000)]))]),
)]);
Найдите сумму всех чисел и выведите ее.