Метод remove_entry
Метод remove_entry удаляет пару ключ-значение
из хеш-таблицы HashMap и возвращает удалённые
данные в виде кортежа (K, V), упакованного
в Option. Параметром метод принимает ссылку
на ключ &K, который нужно найти и удалить.
Если ключ присутствовал в таблице, метод возвращает
Some((key, value)), а если ключа не было -
None. В отличие от метода remove,
который возвращает только значение, данный метод
отдаёт и ключ, и значение.
Синтаксис
hashmap.remove_entry(&key)
Пример
Давайте создадим хеш-таблицу и удалим из неё существующий ключ:
use std::collections::HashMap;
fn main()
{
let mut map = HashMap::new();
map.insert("a", 1);
map.insert("b", 2);
map.insert("c", 3);
let res = map.remove_entry("b");
println!("{:?}", res);
println!("{:?}", map);
}
Результат выполнения кода:
Some(("b", 2))
{"a": 1, "c": 3}
Пример
Давайте попробуем удалить ключ, которого нет в хеш-таблице:
use std::collections::HashMap;
fn main()
{
let mut map = HashMap::new();
map.insert("a", 1);
map.insert("b", 2);
let res = map.remove_entry("z");
println!("{:?}", res);
println!("{:?}", map);
}
Результат выполнения кода:
None
{"a": 1, "b": 2}
Пример
Давайте используем remove_entry вместе
с сопоставлением с образцом, чтобы обработать
оба возможных исхода:
use std::collections::HashMap;
fn main()
{
let mut map = HashMap::new();
map.insert(1, "abcde");
map.insert(2, "12345");
match map.remove_entry(&1) {
Some((key, value)) => {
println!("Removed key: {}, value: {}", key, value);
},
None => {
println!("Key not found");
},
}
println!("{:?}", map);
}
Результат выполнения кода:
Removed key: 1, value: abcde
{2: "12345"}