Многомерные комбинации в Rust
Массив векторов
Массив может хранить векторы. У каждой ячейки своя длина. Сначала берут вектор по индексу массива, затем элемент вектора:
let rows = [vec![1, 2], vec![3, 4, 5]];
println!("{}", rows[1][2]); // выведет 5
Карта векторов
Значением пары карты может быть вектор. Сначала вектор получают по ключу, затем элемент по индексу:
use std::collections::HashMap;
fn main() {
let map: HashMap<&str, Vec<i32>> = HashMap::from([
("a", vec![1, 2, 3]),
("b", vec![4, 5, 6]),
]);
println!("{}", map["a"][1]); // выведет 2
}
Вектор карт
Вектор может хранить карты. Сначала выбирают карту по индексу вектора, затем значение по ключу:
use std::collections::HashMap;
fn main() {
let table = vec![
HashMap::from([("id", 1), ("age", 27)]),
HashMap::from([("id", 2), ("age", 31)]),
];
println!("{}", table[1]["age"]); // выведет 31
}
Дан массив векторов:
let rows = [vec!['x', 'y'], vec!['z', 'w', 'v']];
Выведите второй символ первого вектора.
Дана карта векторов:
let map: HashMap<&str, Vec<i32>> = HashMap::from([
("Ann", vec![5, 4, 5]),
("Bob", vec![3, 5, 4]),
]);
Выведите вторую оценку ученика "Bob".
Дан вектор карт:
let table = vec![
HashMap::from([("city", "Paris"), ("code", "33")]),
HashMap::from([("city", "Rome"), ("code", "39")]),
];
Выведите название города из второй карты.