1. Язык программирования Rust
  2. Предисловие
  3. Введение
  4. Начало
    1. Установка
    2. Hello, World!
    3. Hello, Cargo!
  5. Программирование игры в угадайку
  6. Общие понятия программирования
    1. Переменные и изменяемость
    2. Типы данных
    3. Функции
    4. Комментарии
    5. Управление потоком
  7. Понимание владения
    1. Что такое владение?
    2. Ссылки и заимствование
    3. Срезы
  8. Использование структур для организации данных
    1. Определение и создание экземпляров структур
    2. Пример программы, использующей структуры
    3. Синтаксис метода
  9. Перечисления и соспоставление с шаблоном
    1. Определение перечисления
    2. Конструкция match
    3. Лаконичное управление потоком с if let и let else
  10. Упарвление разрастающимися проектами с помощью пакетов, крейтов и модулей
    1. Пакеты и крейты
    2. Использование модулей для управления областью видимости и приватностью
    3. Пути для ссылки на элемент в дереве модулей
    4. Добавление путей в область видимости ключевым словом use
    5. Размещение модулей в разных файлах
  11. Стандартные коллекции данных
    1. Хранение списка значений с помощью векторов
    2. Хранение текста в кодировке UTF-8 с помощью строк
    3. Хранение пар ключ-значение с помощью хеш-таблиц
  12. Обработка ошибок
    1. Неисправимые ошибки с panic!
    2. Исправимые ошибки с Result
    3. Когда следует использовать panic!?
  13. Обобщённые типы, трейты и времена жизни
    1. Обобщённые типы данных
    2. Трейты: определение схожего поведения
    3. Валидация ссылок по времени жизни
  14. Автоматическое тестирование
    1. Как писать тесты
    2. Управление исполнением тестов
    3. Организация тестов
  15. Проект с вводом-выводом: разрабатываем приложение командной строки
    1. Обработка аргументов командной строки
    2. Чтение файла
    3. Рефакторинг: развитие модульности и обработки ошибок
    4. Разработка функциональности библиотеки через разработку через тестирование
    5. Работа с переменными окружения
    6. Вывод сообщений об ошибках в стандартный поток ошибок
  16. Функциональные особенности: итераторы и замыкания
    1. Замыкания: анонимные функции, захватывающие своё окружение
    2. Обработка последовательностей элементов с помощью итераторов
    3. Улучшаем наш проект с вводом-выводом
    4. Сравнение производительности циклов и итераторов
  17. Подробнее о Cargo и Crates.io
    1. Настройка сборок с помощью релизных профилей
    2. Публикация крейта на Crates.io
    3. Рабочие пространства Cargo
    4. Установка программ с Crates.io с помощью cargo install
    5. Расширение Cargo пользовательскими командами
  18. Умные указатели
    1. Использование Box<T> для работы с данными в куче
    2. Использование умных указателей в качестве обычных ссылок с помощью трейта Deref
    3. Исполнение кода при очистке с помощью трейта Drop
    4. Rc<T> — умный указатель с подсчётом ссылок
    5. RefCell<T> и шаблон внутренней изменяемости
    6. Зацикливание ссылок может вызывать утечки памяти
  19. Безбоязненный параллелизм
    1. Использование потоков для одновременного запуска кода
    2. Использование обмена сообщениями для обмена данными между потоками
    3. Параллелизм с общим состоянием
    4. Расширяемый параллелизм с трейтами Sync и Send
  20. Fundamentals of Asynchronous Programming: Async, Await, Futures, and Streams
    1. Futures and the Async Syntax
    2. Applying Concurrency with Async
    3. Working With Any Number of Futures
    4. Streams: Futures in Sequence
    5. A Closer Look at the Traits for Async
    6. Futures, Tasks, and Threads
  21. Особенности объектно-ориентированного программирования в Rust
    1. Характеристика объектно-ориентированных языков
    2. Использование трейт-объектов, позволяющих использовать значения разных типов
    3. Implementing an Object-Oriented Design Pattern
  22. Шаблоны и соспоставление с шаблоном
    1. Где применимо соспоставление с шаблоном
    2. Опровержимость: может ли шаблон не сопоставиться
    3. Синтаксис шаблонов
  23. Продвинутые возможности
    1. Небезопасный Rust
    2. Продвинутые трейты
    3. Продвинутые типы
    4. Продвинутые функции и замыкания
    5. Макросы
  24. Итоговый проект: создание многопоточного веб-сервера
    1. Создание однопоточного веб-сервера
    2. Превращение нашего однопоточного сервера в многопоточный
    3. Благополучное завершение работы
  25. Приложения
    1. A — Ключевые слова
    2. B — Операторы и символы
    3. C — Выводимые трейты
    4. D — Полезные инструменты разработки
    5. E — Редакции
    6. F — Переводы
    7. G — Как разрабатывается Rust и "Nightly Rust"