РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
529 of 1245 menu

Вариант 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

Смотрите также

  • вариант Ok,
    который представляет успешный результат операции
  • перечисление enum,
    которое описывает пользовательские перечисления
  • конструкция match,
    которая позволяет обрабатывать варианты перечислений
  • конструкция if let,
    которая позволяет сопоставить один конкретный вариант
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить