Метод iter_mut
Метод iter_mut возвращает итератор, который
позволяет обходить все пары ключ-значение в хеш-таблице
и изменять значения. Ключи при этом остаются неизменными,
так как изменение ключа могло бы нарушить внутреннюю
структуру HashMap. Параметров метод не принимает.
Синтаксис
hashmap.iter_mut()
Пример
Давайте создадим хеш-таблицу и увеличим каждое
значение на 1 с помощью iter_mut:
use std::collections::HashMap;
fn main()
{
let mut map = HashMap::new();
map.insert("a", 1);
map.insert("b", 2);
map.insert("c", 3);
for (_, value) in map.iter_mut() {
*value += 1;
}
println!("{:?}", map);
}
Результат выполнения кода:
{"a": 2, "b": 3, "c": 4}
Пример
Давайте обнулим все значения в хеш-таблице, обращаясь и к ключу, и к значению:
use std::collections::HashMap;
fn main()
{
let mut map = HashMap::new();
map.insert("a", 10);
map.insert("b", 20);
map.insert("c", 30);
for (key, value) in map.iter_mut() {
println!("{}: {}", key, value);
*value = 0;
}
println!("{:?}", map);
}
Результат выполнения кода:
a: 10
b: 20
c: 30
{"a": 0, "b": 0, "c": 0}
Пример
Давайте умножим каждое значение на 2,
используя метод iter_mut и не забывая
про разыменование:
use std::collections::HashMap;
fn main()
{
let mut map = HashMap::new();
map.insert("a", 1);
map.insert("b", 2);
map.insert("c", 3);
for value in map.values_mut() {
*value *= 2;
}
for (key, value) in map.iter_mut() {
println!("{} = {}", key, value);
}
}
Результат выполнения кода:
a = 2
b = 4
c = 6
Смотрите также
-
метод
iter,
который возвращает неизменяемый итератор по парам ключ-значение -
метод
values_mut,
который возвращает изменяемый итератор только по значениям -
метод
get_mut,
который возвращает изменяемую ссылку на значение по ключу -
метод
retain,
который удаляет элементы, не удовлетворяющие условию