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

Метод unwrap

Метод unwrap извлекает значение из перечислений Result и Option. Если контейнер содержит значение Ok или Some, метод возвращает это значение. Если же контейнер содержит ошибку Err или пустое значение None, метод вызывает панику с соответствующим сообщением. Параметров метод не принимает.

Синтаксис

result.unwrap() option.unwrap()

Пример

Давайте извлечём значение из Result, содержащего успешный результат:

fn main() { let res: Result<i32, &str> = Ok(42); let value = res.unwrap(); println!("{}", value); }

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

42

Пример

Давайте извлечём значение из Option, содержащего некоторое значение:

fn main() { let opt: Option<&str> = Some("abcde"); let value = opt.unwrap(); println!("{}", value); }

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

"abcde"

Пример

Если Result содержит ошибку, метод unwrap вызовет панику:

fn main() { let res: Result<i32, &str> = Err("something went wrong"); let value = res.unwrap(); println!("{}", value); }

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

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: "something went wrong"'

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

  • метод expect,
    который извлекает значение с пользовательским сообщением об ошибке
  • метод unwrap_or,
    который возвращает значение по умолчанию вместо паники
  • метод unwrap_or_else,
    который вычисляет значение по умолчанию через замыкание
  • метод unwrap_err,
    который извлекает ошибку из Result, паникуя при Ok
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить