Понимание метода unwrap_or_else в Rust для обработки результатов

«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в качестве значения по умолчанию.