1. Язык программирования Rust
  2. Предисловие
  3. Введение
  4. С чего начать
    1. Установка
    2. Привет, Мир!
    3. Hello, Cargo!
  5. Программирование игры в загадки
  6. Общие концепции программирования
    1. Переменные и изменяемость
    2. Типы Данных
    3. Функции
    4. Комментарии
    5. Управляющие конструкции
  7. Понимание владения
    1. Что такое "владение"?
    2. Ссылки и заимствование
    3. Тип среза
  8. Использование структур для объединения связанных данных
    1. Определение и создание экземпляров структур
    2. Пример программы, использующей структуры
    3. Синтаксис метода
  9. Перечисления и сопоставление с образцом
    1. Определение Enum
    2. Конструкция потока управления match
    3. Лаконичный поток управления с if let
  10. Управление растущими проектами с помощью пакетов, крейтов и модулей
    1. Пакеты и крейты
    2. Определение модулей для управления областью действия и конфиденциальностью
    3. Пути для ссылки на элемент в дереве модулей
    4. Введение путей в область видимости с помощью ключевого слова use
    5. Separating Modules into Different Files
  11. Общие коллекции
    1. Хранение списков значений с векторами
    2. Хранение закодированного текста UTF-8 со строками
    3. Хранение ключей со связанными значениями в HashMap
  12. Обработка ошибок
    1. Неустранимые ошибки с panic!
    2. Устранимые ошибки с Result
    3. panic! или Не panic!
  13. Общие типы, трейты (характеристики) и время жизни
    1. Обобщённые типы данных
    2. Трейты (характеристики): определение разделяемого поведения
    3. Валидация ссылок посредством сроков жизни
  14. Написание автоматических тестов
    1. Как писать тесты
    2. Управление выполнением тестов
    3. Организация тестов
  15. Проект с вводом-выводом: создание программы командной строки
    1. Получение аргументов командной строки
    2. Чтение файла
    3. Рефакторинг для обеспечения модульности и улучшения обработки ошибок
    4. Разработка функциональности библиотеки с помощью разработки через тестирование
    5. Работа с переменными среды
    6. Запись сообщений об ошибках в stderr вместо stdout
  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. Возможности объектно-ориентированного программирования Rust
    1. Характеристики объектно-ориентированных языков
    2. Использование трейт-объектов, допускающих значения разных типов
    3. Реализация шаблона объектно-ориентированного проектирования
  21. Шаблоны и сопоставление
    1. Все места, где могут использоваться шаблоны
    2. Опровержимость: может ли шаблон не соответствовать
    3. Синтаксис шаблона
  22. Расширенные возможности
    1. Небезопасный код в Rust
    2. Продвинутые типажи
    3. Продвинутые типы
    4. Продвинутые функции и замыкания
    5. Макросы
  23. Финальный проект: создание многопоточного веб-сервера
    1. Создание однопоточного веб-сервера
    2. Превращение нашего однопоточного сервера в многопоточный сервер
    3. Мягкое завершение работы и очистка
  24. Приложения
    1. А — Ключевые слова
    2. B — Операторы и символы
    3. C — Выводимые трейты
    4. D — Полезные инструменты разработки
    5. E — Редакции
    6. F — Переводы книги
    7. G — Как создаётся Rust и «Nightly Rust»