Этот вопрос проверяет, как преобразовать значение типа Option в тип Result, который предоставляет дополнительные возможности для обработки ошибок.
Чтобы преобразовать Option в Result, можно использовать метод .ok_or_else(), который возвращает Result, где в случае None используется переданное сообщение об ошибке.
В Rust Option и Result — это два часто используемых типа для обработки значений, которые могут быть или не быть. Чтобы конвертировать Option в Result, можно воспользоваться методом .ok_or_else().
Метод .ok_or_else():
Преобразует значение типа Option в тип Result.
Если Option содержит Some, то возвращается Result::Ok с содержимым.
Если Option равно None, то вызывается переданная замыкание, и его результат оборачивается в Result::Err.
Пример:
let foo: Option<i32> = Some(1);
let result: Result<i32, &str> = foo.ok_or_else(|| "no number provided");
println!("{:?}", result); // Ok(1)
let foo: Option<i32> = None;
let result: Result<i32, &str> = foo.ok_or_else(|| "no number provided");
println!("{:?}", result); // Err("no number provided")Метод .ok_or_else() удобно преобразует Option в Result, позволяя легко обрабатывать случаи отсутствия значения с помощью пользовательских сообщений об ошибках.