![Rust Logo](https://habrastorage.org/getpro/habr/post_images/3e5/11e/a6f/3e511ea6f5963a2c86ed90176d924c50.png)
Сегодня Аарон Тюрон — разработчик, недавно присоединившийся к разработке Rust в Mozilla —
объявил об отсрочке реализации какого-либо механизма исключений, кроме уже существующего макроса
try!
и типа
Result
, до неопределённого момента
после первого релиза языка программирования Rust.
Это означает, что в Rust 1.0 будут отсутствовать исключения первого класса — то есть, полностью интегрированные с другими фичами языка.
Для обработки ошибок в данной момент в Rust существует тип
Result { Ok(value), Err(why) }
и макрос
try!
. Тип
Result
представляет из себя перечисление (enum), похожее на
Option { Some(value), None }
и связанное с ним по смыслу. Вариант
None
типа
Option
говорит об отстутствии значения, а вариант
Err(why)
типа
Result
уточняет, почему значение отсутствует.
Rust предлагает возвращать тип
Result
из функций, чтобы передавать значение возврата
или причину, по которой значение вернуть не удалось. Макрос
try!
в свою очередь позволяет автоматически возвращать
Err(why)
из текущей функции, если вызов другой функции не удался (применяется к объекту типа
Result
).