Метод extend
Метод extend добавляет в хеш-таблицу
все пары ключ-значение из переданного итератора.
Параметром метод принимает итератор, элементами
которого являются кортежи вида (K, V),
где K - тип ключа, а V - тип значения.
Если добавляемый ключ уже присутствует в таблице,
его значение будет перезаписано новым.
Синтаксис
hashmap.extend(iter)
Пример
Давайте создадим хеш-таблицу и добавим в неё элементы из вектора кортежей:
use std::collections::HashMap;
fn main()
{
let mut map = HashMap::new();
let items = vec![(1, "a"), (2, "b"), (3, "c")];
map.extend(items);
println!("{:?}", map);
}
Результат выполнения кода:
{1: "a", 2: "b", 3: "c"}
Пример
Если добавляемый ключ уже есть в таблице, то его значение будет заменено новым:
use std::collections::HashMap;
fn main()
{
let mut map = HashMap::new();
map.insert(1, "a");
map.insert(2, "b");
let items = vec![(2, "x"), (3, "c")];
map.extend(items);
println!("{:?}", map);
}
Результат выполнения кода:
{1: "a", 2: "x", 3: "c"}
Пример
Метод extend также умеет объединять
две хеш-таблицы. Давайте создадим две таблицы
и добавим содержимое одной в другую:
use std::collections::HashMap;
fn main()
{
let mut map1 = HashMap::new();
map1.insert(1, "a");
map1.insert(2, "b");
let mut map2 = HashMap::new();
map2.insert(2, "x");
map2.insert(3, "c");
map1.extend(map2);
println!("{:?}", map1);
}
Результат выполнения кода:
{1: "a", 2: "x", 3: "c"}
Пример
Метод extend можно использовать
с любым итератором, например с результатом
вызова метода map:
use std::collections::HashMap;
fn main()
{
let mut map = HashMap::new();
let nums = vec![1, 2, 3];
map.extend(nums.iter().map(|x| (*x, x * 10)));
println!("{:?}", map);
}
Результат выполнения кода:
{1: 10, 2: 20, 3: 30}