Что такое 'Result'?
Часть раздела Logic & Flow путешествия по Rust на Coddy — урок 42 из 66.
В то время как Option обрабатывает отсутствие значений, Rust предоставляет другое перечисление для иного, но не менее важного сценария: операций, которые могут завершиться ошибкой. Встречайте Result<T, E> — основной инструмент Rust для обработки восстановимых ошибок.
Перечисление Result имеет два варианта, которые представляют результат операции:
enum Result<T, E> {
Ok(T), // Успех — содержит успешный результат
Err(E), // Ошибка — содержит информацию об ошибке
}Когда операция завершается успешно, она возвращает Ok(value), содержащий успешный результат. Когда она завершается с ошибкой, она возвращает Err(error), содержащий информацию о том, что пошло не так. Такая явная обработка случаев успеха и неудачи делает программы на Rust более надежными и предсказуемыми.
Вы будете встречать Result повсюду в Rust — от операций с файлами, которые могут завершиться ошибкой из-за отсутствия файлов, до сетевых запросов, время ожидания которых может истечь, и операций парсинга, которые могут получить некорректные входные данные. В отличие от языков, использующих исключения, Rust заставляет вас признать, что операции могут завершиться неудачей, и явно обрабатывать оба исхода.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Шпаргалка
Перечисление Result<T, E> обрабатывает операции, которые могут завершиться ошибкой:
enum Result<T, E> {
Ok(T), // Успех — содержит успешный результат
Err(E), // Ошибка — содержит информацию об ошибке
}Когда операция проходит успешно, она возвращает Ok(value). Когда она завершается неудачей, она возвращает Err(error).
Result используется для восстановимых ошибок, таких как операции с файлами, сетевые запросы и операции парсинга. Rust требует явной обработки как случаев успеха, так и случаев неудачи.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Logic & Flow
1Продвинутое управление потоком выполнения
Выражение 'match'Сопоставление нескольких значенийСопоставление диапазоновВыражение 'if let'Циклы как выраженияИтоги — Простой парсер команд4Группировка данных с помощью структур
Что такое структура?Обзор структурДоступ к полям структурыИзменяемые структурыСтруктуры как параметры функцийКортежные структурыИтоги: создание структуры Book7Обработка ошибок с помощью 'Result'
Что такое 'Result'?Использование 'match' с 'Result'is_ok() и is_err()Сокращения: unwrap и expectОператор вопросительного знака '?'Парсинг строк в числаИтоги: функция безопасного деления10Замыкания и анонимные функции
Что такое замыкание?Определение простого замыканияЗамыкания с параметрамиЗахват окруженияИтоги: Простое замыкание-сумматор2Введение в векторы
Что такое вектор?Создание вектораДобавление элементов с помощью pushДоступ к элементам вектораИтерация по векторуИзменяемая итерацияУдаление элементовИтоги — Простой счетчик очков5Пары «ключ-значение» в Hash Map
Что такое Hash Map?Создание Hash MapВставка пар «ключ-значение»Доступ к значениямИтерация по Hash MapОбновление значенияУдаление парыИтоги — Счетчик слов8Проект: Простой инвентарь товаров
Настройка проектаДобавление товараПроверка наличияПродажа товараСобираем всё воедино3Список дел в командной строке
Настройка проектаДобавление задачиПросмотр всех задачУдаление задачиИтоговый код6Обработка отсутствия значения с 'Option'
Что такое 'Option'?Использование 'match' с 'Option'is_some() и is_none()Распаковка 'Option'Метод expectЗначение по умолчанию: unwrap_orИтоги: поиск элемента