Метод or_else
Метод or_else возвращает значение Some,
если оно присутствует в Option. Если же Option равен
None, метод вызывает переданное замыкание и
возвращает результат его выполнения. Параметром метод
принимает замыкание, которое не получает аргументов и
должно вернуть новый Option.
Метод удобен, когда нужно лениво вычислить запасное значение только при отсутствии основного.
Синтаксис
option.or_else(f)
Пример
Давайте применим or_else к значению Some
и выведем результат:
fn main()
{
let res = Some("abcde").or_else(|| Some("12345"));
println!("{:?}", res);
}
Результат выполнения кода:
Some("abcde")
Пример
Давайте применим or_else к значению None
и выведем результат:
fn main()
{
let res: Option<&str> = None;
let res = res.or_else(|| Some("12345"));
println!("{:?}", res);
}
Результат выполнения кода:
Some("12345")
Пример
Давайте применим or_else к значению None
с замыканием, которое возвращает None:
fn main()
{
let res: Option<&str> = None;
let res = res.or_else(|| None);
println!("{:?}", res);
}
Результат выполнения кода:
None
Смотрите также
-
класс
Option,
который представляет опциональное значение -
метод
and_then,
который применяет функцию к значению Some -
метод
ok_or_else,
который преобразует Option в Result с ленивым вычислением ошибки -
метод
map,
который преобразует значение внутри Some