Вариант Ok
Вариант Ok является одним из двух вариантов
перечисления Result. Он используется для
представления успешного результата выполнения операции
и содержит внутри себя значение этого результата.
Параметром вариант Ok принимает значение,
которое нужно обернуть в успешный результат.
Перечисление Result имеет два варианта:
Ok для успеха и Err для ошибки.
Это позволяет функциям возвращать либо значение,
либо информацию об ошибке, не прибегая к исключениям.
Синтаксис
Result::Ok(value)
Ok(value)
Пример
Давайте создадим успешный результат с числом 42
и выведем его на экран:
fn main()
{
let res: Result<i32, &str> = Ok(42);
println!("{:?}", res);
}
Результат выполнения кода:
Ok(42)
Пример
Давайте напишем функцию, которая возвращает успешный
результат при делении, и обработаем его через match:
fn divide(a: i32, b: i32) -> Result<i32, String>
{
if b == 0
{
return Err(String::from("division by zero"));
}
Ok(a / b)
}
fn main()
{
let res = divide(10, 2);
match res
{
Ok(value) => println!("Result: {}", value),
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода:
Result: 5
Пример
Давайте извлечём значение из варианта Ok
с помощью метода unwrap:
fn main()
{
let res: Result<&str, &str> = Ok("abcde");
let value = res.unwrap();
println!("{}", value);
}
Результат выполнения кода:
"abcde"