Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsPmErOE 312 of 373 menu
◀ ▶

Тип Result в Rust

Тип Result с двумя параметрами описывает либо удачный ответ, либо описание сбоя. Первый параметр - тип полезных данных, второй - тип текста или другого значения для неудачи. Исход либо несет результат, либо несет описание того, что не удалось.

Удачный вариант пишут как Ok со значением внутри скобок. Неудачный - как Err с текстом или другим значением сбоя. Для целого числа и строки сбоя тип выглядит так:

fn main() { let good: Result<i32, String> = Ok(7); let bad: Result<i32, String> = Err(String::from("empty")); println!("{:?}", good); println!("{:?}", bad); }

Функция может вернуть любой из двух вариантов в зависимости от входных данных:

fn half(n: i32) -> Result<i32, String> { if n % 2 == 0 { Ok(n / 2) } else { Err(String::from("odd")) } } fn main() { let a = half(8); let b = half(5); println!("{:?}", a); println!("{:?}", b); }

Дан следующий код:

let step: Result<i32, String> = Ok(3);

Запишите рядом переменную stop того же типа с вариантом сбоя и текстом "halt".

Дан следующий код:

fn pick(n: i32) -> Result<i32, String> { if n > 0 { Ok(n) } else { Err(String::from("small")) } }

В main получите два результата pick для 4 и 0 и выведите оба через println! с {:?}.

Скажите, какой вариант Result несет полезное число, а какой - описание сбоя в примере с half.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить