Введение в ошибки в Rust
Ошибка в Rust - это значение, которое функция отдает наружу, когда выполнить задуманное действие не получилось. Такой исход описывают в типе результата рядом с удачным ответом. Вызывающий код сам решает, что делать дальше: разобрать оба варианта или передать сбой выше по цепочке вызовов.
Это близко к идее необязательного значения, с которым вы уже работали: там один тип несет либо данные, либо отсутствие. Здесь второй вариант несет не пустоту, а текст или другой тип, который объясняет, что пошло не так. Удачный и неудачный исход живут в одном типе результата функции.
Функции с таким результатом можно вызывать
из обычного main.rs так же, как
функции, которые возвращают число или
строку. Разница в том, что после вызова
нужно явно учесть оба исхода или использовать
короткую запись, которая сразу возвращает
сбой из текущей функции. Язык не заставляет
игнорировать неудачный вариант.
Дальше разберем пару исходов в одном типе,
полный разбор, знак вопроса в теле функции,
печать текста сбоя и момент, когда значение
кончается вместе с именем. Файлы и первые
предложения: ok-err/ru.html (исход
либо несет результат, либо несет описание
сбоя), match/ru.html (разбор обязан
назвать удачный исход и сбой), question/ru.html
(знак вопроса в функции с тем же типом
исхода либо достает результат, либо сразу
возвращает сбой наружу), text/ru.html
(текст сбоя печатают так же, как обычную
фразу), end/ru.html (значение кончается
вместе с именем, когда блок заканчивается),
practice/ru.html (в этих задачах
потренируем удачный исход и сбой).