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

Метод as_mut

Метод as_mut позволяет получить изменяемую ссылку на значение, содержащееся внутри варианта Some. Если же вариант содержит None, метод вернёт None и не предоставит доступ к значению. Метод не принимает параметров и не изменяет исходный Option, а лишь заимствует его содержимое на время.

Этот метод особенно полезен, когда нужно изменить значение внутри Option, не забирая его по владению. Он возвращает Option<&mut T>, что позволяет безопасно работать с внутренними данными через изменяемую ссылку.

Синтаксис

option.as_mut()

Пример

Давайте создадим изменяемый Option с числом и изменим его значение через метод as_mut:

fn main() { let mut opt = Some(5); if let Some(value) = opt.as_mut() { *value = 10; } println!("{:?}", opt); }

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

Some(10)

Пример

Давайте проверим работу метода на варианте None:

fn main() { let mut opt: Option<i32> = None; if let Some(value) = opt.as_mut() { *value = 10; } else { println!("Option is None"); } println!("{:?}", opt); }

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

Option is None None

Пример

Давайте используем as_mut для изменения строки внутри Option:

fn main() { let mut opt = Some(String::from("abcde")); if let Some(s) = opt.as_mut() { s.push_str("12345"); } println!("{:?}", opt); }

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

Some("abcde12345")

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

  • класс Option,
    который представляет опциональное значение
  • метод as_ref,
    который возвращает неизменяемую ссылку на значение
  • метод take,
    который забирает значение из Option, оставляя None
  • метод replace,
    который заменяет значение внутри Option
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить