Язык программирования Rust
Предисловие
Введение
1.
Начало
1.1.
Установка
1.2.
Hello, World!
1.3.
Hello, Cargo!
2.
Программирование игры в угадайку
3.
Общие понятия программирования
3.1.
Переменные и изменяемость
3.2.
Типы данных
3.3.
Функции
3.4.
Комментарии
3.5.
Управление потоком
4.
Понимание владения
4.1.
Что такое владение?
4.2.
Ссылки и заимствование
4.3.
Срезы
5.
Использование структур для организации данных
5.1.
Определение и создание экземпляров структур
5.2.
Пример программы, использующей структуры
5.3.
Синтаксис метода
6.
Перечисления и соспоставление с шаблоном
6.1.
Определение перечисления
6.2.
Конструкция match
6.3.
Лаконичное управление потоком с if let и let else
7.
Упарвление разрастающимися проектами с помощью пакетов, крейтов и модулей
7.1.
Пакеты и крейты
7.2.
Использование модулей для управления областью видимости и приватностью
7.3.
Пути для ссылки на элемент в дереве модулей
7.4.
Добавление путей в область видимости ключевым словом use
7.5.
Размещение модулей в разных файлах
8.
Стандартные коллекции данных
8.1.
Хранение списка значений с помощью векторов
8.2.
Хранение текста в кодировке UTF-8 с помощью строк
8.3.
Хранение пар ключ-значение с помощью хеш-таблиц
9.
Обработка ошибок
9.1.
Неисправимые ошибки с panic!
9.2.
Исправимые ошибки с Result
9.3.
Когда следует использовать panic!?
10.
Обобщённые типы, трейты и времена жизни
10.1.
Обобщённые типы данных
10.2.
Трейты: определение схожего поведения
10.3.
Валидация ссылок по времени жизни
11.
Автоматическое тестирование
11.1.
Как писать тесты
11.2.
Управление исполнением тестов
11.3.
Организация тестов
12.
Проект с вводом-выводом: разрабатываем приложение командной строки
12.1.
Обработка аргументов командной строки
12.2.
Чтение файла
12.3.
Рефакторинг: развитие модульности и обработки ошибок
12.4.
Разработка функциональности библиотеки через разработку через тестирование
12.5.
Работа с переменными окружения
12.6.
Вывод сообщений об ошибках в стандартный поток ошибок
13.
Функциональные особенности: итераторы и замыкания
13.1.
Замыкания: анонимные функции, захватывающие своё окружение
13.2.
Обработка последовательностей элементов с помощью итераторов
13.3.
Улучшаем наш проект с вводом-выводом
13.4.
Сравнение производительности циклов и итераторов
14.
Подробнее о Cargo и Crates.io
14.1.
Настройка сборок с помощью релизных профилей
14.2.
Публикация крейта на Crates.io
14.3.
Рабочие пространства Cargo
14.4.
Установка программ с Crates.io с помощью cargo install
14.5.
Расширение Cargo пользовательскими командами
15.
Умные указатели
15.1.
Использование Box<T> для работы с данными в куче
15.2.
Использование умных указателей в качестве обычных ссылок с помощью трейта Deref
15.3.
Исполнение кода при очистке с помощью трейта Drop
15.4.
Rc<T> — умный указатель с подсчётом ссылок
15.5.
RefCell<T> и шаблон внутренней изменяемости
15.6.
Зацикливание ссылок может вызывать утечки памяти
16.
Безбоязненный параллелизм
16.1.
Использование потоков для одновременного запуска кода
16.2.
Использование обмена сообщениями для обмена данными между потоками
16.3.
Параллелизм с общим состоянием
16.4.
Расширяемый параллелизм с трейтами Sync и Send
17.
Fundamentals of Asynchronous Programming: Async, Await, Futures, and Streams
17.1.
Futures and the Async Syntax
17.2.
Applying Concurrency with Async
17.3.
Working With Any Number of Futures
17.4.
Streams: Futures in Sequence
17.5.
A Closer Look at the Traits for Async
17.6.
Futures, Tasks, and Threads
18.
Особенности объектно-ориентированного программирования в Rust
18.1.
Характеристика объектно-ориентированных языков
18.2.
Использование трейт-объектов, позволяющих использовать значения разных типов
18.3.
Implementing an Object-Oriented Design Pattern
19.
Шаблоны и соспоставление с шаблоном
19.1.
Где применимо соспоставление с шаблоном
19.2.
Опровержимость: может ли шаблон не сопоставиться
19.3.
Синтаксис шаблонов
20.
Продвинутые возможности
20.1.
Небезопасный Rust
20.2.
Продвинутые трейты
20.3.
Продвинутые типы
20.4.
Продвинутые функции и замыкания
20.5.
Макросы
21.
Итоговый проект: создание многопоточного веб-сервера
21.1.
Создание однопоточного веб-сервера
21.2.
Превращение нашего однопоточного сервера в многопоточный
21.3.
Благополучное завершение работы
22.
Приложения
22.1.
A — Ключевые слова
22.2.
B — Операторы и символы
22.3.
C — Выводимые трейты
22.4.
D — Полезные инструменты разработки
22.5.
E — Редакции
22.6.
F — Переводы
22.7.
G — Как разрабатывается Rust и "Nightly Rust"
Light
Rust
Coal
Navy
Ayu
The Rust Programming Language
English
日本語
Русский
Приложения
The following sections contain reference material you may find useful in your Rust journey.