«unwrap_or_else» — это метод в Rust, который используется для обработки типа «Результат». Тип «Результат» в Rust представляет собой результат операции, которая может быть либо успешной (Ok), либо неудачной (Err). Метод «unwrap_or_else» позволяет извлечь значение из варианта OkResultили предоставить значение по умолчанию, выполнив замыкание, если результатом является Err..
Вот пример, демонстрирующий использование unwrap_or_else:
fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
if b != 0 {
Ok(a / b)
} else {
Err("Cannot divide by zero!")
}
}
fn main() {
let result = divide(10, 5);
let value = result.unwrap_or_else(|err| {
println!("Error: {}", err);
0 // Default value
});
println!("Result: {}", value);
}
В приведенном выше примере функция divideвозвращает Result, где вариант Okсодержит результат деления и Err<Вариант /code>представляет ошибку деления на ноль. Метод unwrap_or_elseвызывается для переменной result, чтобы извлечь значение, если оно Ok, или предоставить значение по умолчанию, выполнив замыкание, если оно >Эрр. В этом случае, если результатом будет Ok, значение будет извлечено и напечатано. Если результатом является Err, закрытие будет выполнено, выведет сообщение об ошибке и вернет 0в качестве значения по умолчанию.