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

Метод unwrap_or_else

Метод unwrap_or_else извлекает значение из Option или Result. Если значение присутствует (Some или Ok), метод возвращает его. Если значения нет (None или Err), метод вызывает переданное замыкание и возвращает его результат. Параметром метод принимает замыкание без аргументов, которое вычисляет альтернативное значение.

Синтаксис

option.unwrap_or_else(|| default_value) result.unwrap_or_else(|err| default_value)

Пример

Давайте извлечем значение из Some и из None, используя unwrap_or_else:

fn main() { let some_value: Option<i32> = Some(12345); let none_value: Option<i32> = None; let res1 = some_value.unwrap_or_else(|| 0); let res2 = none_value.unwrap_or_else(|| 0); println!("{}", res1); println!("{}", res2); }

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

12345 0

Пример

Давайте извлечем значение из Ok и из Err, используя unwrap_or_else:

fn main() { let ok_value: Result<i32, &str> = Ok(12345); let err_value: Result<i32, &str> = Err("error"); let res1 = ok_value.unwrap_or_else(|_| 0); let res2 = err_value.unwrap_or_else(|_| 0); println!("{}", res1); println!("{}", res2); }

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

12345 0

Пример

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

fn main() { let err_value: Result<i32, &str> = Err("abcde"); let res = err_value.unwrap_or_else(|e| { println!("Error: {}", e); 0 }); println!("{}", res); }

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

Error: abcde 0

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

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