РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
707 of 1245 menu

Метод or_insert

Метод or_insert принадлежит классу Entry и используется для вставки значения в HashMap, если указанный ключ ещё не присутствует в коллекции. Если ключ уже есть, метод возвращает изменяемую ссылку на существующее значение. Параметром метод принимает значение, которое нужно вставить при отсутствии ключа.

Метод возвращает &mut V - изменяемую ссылку на значение, связанное с ключом. Это позволяет как читать, так и изменять значение напрямую.

Синтаксис

entry.or_insert(value)

Пример

Давайте создадим HashMap и вставим значение по ключу "a", которого ещё нет в коллекции:

use std::collections::HashMap; fn main() { let mut map = HashMap::new(); let res = map.entry("a").or_insert(1); println!("{}", res); println!("{:?}", map); }

Результат выполнения кода:

1 {"a": 1}

Пример

Давайте проверим, что произойдёт, если ключ уже существует. Метод вернёт ссылку на старое значение, не изменяя его:

use std::collections::HashMap; fn main() { let mut map = HashMap::new(); map.insert("a", 1); let res = map.entry("a").or_insert(100); println!("{}", res); println!("{:?}", map); }

Результат выполнения кода:

1 {"a": 1}

Пример

Давайте используем возвращаемую изменяемую ссылку, чтобы изменить значение сразу после вставки:

use std::collections::HashMap; fn main() { let mut map = HashMap::new(); let res = map.entry("a").or_insert(1); *res += 10; println!("{:?}", map); }

Результат выполнения кода:

{"a": 11}

Смотрите также

  • класс Entry,
    который представляет запись в HashMap
  • метод or_insert_with,
    который вставляет значение, вычисляемое функцией
  • метод or_default,
    который вставляет значение по умолчанию
  • метод and_modify,
    который изменяет значение до вставки
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить