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

Метод as_ref

Метод as_ref преобразует тип Option<T> в Option<&T>, создавая ссылку на значение внутри Some, не забирая владение. Метод не принимает параметров и возвращает новый Option, содержащий ссылку на исходное значение, если оно есть, либо None в противном случае.

Этот метод особенно полезен, когда нужно использовать значение по ссылке, сохранив исходный Option доступным для дальнейшего использования.

Синтаксис

option.as_ref()

Пример

Давайте создадим Option с числом и получим ссылку на него с помощью метода as_ref:

fn main() { let opt = Some(12345); let ref_opt = opt.as_ref(); println!("{:?}", ref_opt); println!("{:?}", opt); }

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

Some(12345) Some(12345)

Как видно из примера, исходный Option остался доступным после вызова as_ref.

Пример

Давайте рассмотрим работу метода as_ref с None:

fn main() { let opt: Option<i32> = None; let ref_opt = opt.as_ref(); println!("{:?}", ref_opt); }

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

None

Пример

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

fn print_length(s: Option<&String>) { match s { Some(val) => println!("Length: {}", val.len()), None => println!("None"), } } fn main() { let opt = Some(String::from("abcde")); print_length(opt.as_ref()); println!("{:?}", opt); }

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

Length: 5 Some("abcde")

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

  • метод as_mut,
    который преобразует Option в Option<&mut T>
  • метод is_some,
    который проверяет, содержит ли Option значение
  • метод unwrap,
    который извлекает значение из Option
  • метод take,
    который забирает значение из Option, оставляя None
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить