Как можно конвертировать Option в Result в Rust?
Этот вопрос проверяет, как преобразовать значение типа 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, позволяя легко обрабатывать случаи отсутствия значения с помощью пользовательских сообщений об ошибках.