Вариант Err
Вариант Err является одним из двух вариантов
перечисления Result. Он представляет собой
неуспешный результат выполнения операции и содержит
внутри себя значение ошибки. Параметром вариант
Err принимает значение, которое описывает
причину ошибки. Чаще всего используется совместно
с вариантом Ok, который представляет
успешный результат.
Синтаксис
Result::Err(value)
Пример
Давайте создадим значение типа Result
с вариантом Err и выведем его на экран:
fn main()
{
let res: Result<i32, &str> = Err("something went wrong");
println!("{:?}", res);
}
Результат выполнения кода:
Err("something went wrong")
Пример
Давайте обработаем вариант Err
с помощью конструкции 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, 0);
match res {
Ok(value) => println!("Result: {}", value),
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода:
Error: division by zero
Пример
Давайте используем метод is_err
для проверки, является ли результат ошибкой:
fn main()
{
let res: Result<i32, &str> = Err("failed");
println!("{}", res.is_err());
}
Результат выполнения кода:
true