Введение
1.
Привет, мир!
1.1.
Комментарии
1.2.
Форматированный вывод
1.2.1.
Debug
1.2.2.
Display
1.2.2.1.
Пример: Список
1.2.3.
Форматирование
2.
Примитивы
2.1.
Литералы и операторы
2.2.
Кортежи
2.3.
Массивы и срезы
3.
Пользовательские типы
3.1.
Структуры
3.2.
Перечисления
3.2.1.
Декларация use
3.2.2.
C-подобные перечисления
3.2.3.
Пример: Связанный список
3.3.
Константы
4.
Связывание переменных
4.1.
Изменяемость
4.2.
Область видимости и затенение
4.3.
Предварительное объявление
4.4.
Заморозка
5.
Типы
5.1.
Приведение типов
5.2.
Литералы
5.3.
Вывод типов
5.4.
Псевдонимы
6.
Преобразования
6.1.
From и Into
6.2.
TryFrom и TryInto
6.3.
FromStr и ToString
7.
Выражения
8.
Управление потоком
8.1.
if/else
8.2.
loop
8.2.1.
Вложенность и метки
8.2.2.
Возврат из циклов
8.3.
while
8.4.
for и range
8.5.
match
8.5.1.
Деструктуризация
8.5.1.1.
Кортежи
8.5.1.2.
Перечисления
8.5.1.3.
Указатели и ссылки
8.5.1.4.
Структуры
8.5.2.
Ограничители шаблонов
8.5.3.
Связывание
8.6.
if let
8.7.
while let
9.
Функции
9.1.
Методы
9.2.
Замыкания
9.2.1.
Захват
9.2.2.
Как входные параметры
9.2.3.
Анонимность типов
9.2.4.
Входные функции
9.2.5.
Как выходные параметры
9.2.6.
Примеры из стандартной библиотеки
9.2.6.1.
Iterator::any
9.2.6.2.
Поиск через итераторы
9.3.
Функции высшего порядка
9.4.
Расходящиеся функции
10.
Модули
10.1.
Видимость
10.2.
Видимость структуры
10.3.
Декларация use
10.4.
super и self
10.5.
Иерархия файлов
11.
Контейнеры
11.1.
Библиотеки
11.2.
extern crate
12.
Cargo
12.1.
Зависимости
12.2.
Соглашения
12.3.
Тестирование
12.4.
Скрипты сборки
13.
Атрибуты
13.1.
dead_code
13.2.
Контейнеры
13.3.
cfg
13.3.1.
Собственные условия
14.
Обобщения
14.1.
Функции
14.2.
Реализация
14.3.
Типажи (трейты)
14.4.
Ограничения
14.4.1.
Пример: пустые ограничения
14.5.
Множественные ограничения
14.6.
Утверждения where
14.7.
New Type идиома
14.8.
Ассоциированные элементы
14.8.1.
Проблема
14.8.2.
Ассоциированные типы
14.9.
PhantomData-параметры
14.9.1.
Пример: unit clarification
15.
Правила области видимости
15.1.
RAII
15.2.
Владение и перемещение
15.2.1.
Изменяемость
15.3.
Заимствование
15.3.1.
Mutability
15.3.2.
Алиасинг
15.3.3.
ref паттерн
15.4.
Времена жизни
15.4.1.
Явное аннотирование
15.4.2.
Функции
15.4.3.
Методы
15.4.4.
Структуры
15.4.5.
Типажи
15.4.6.
Ограничения
15.4.7.
Приведение (coercion)
15.4.8.
Static
15.4.9.
Сокрытие
16.
Типажи
16.1.
Атрибут Derive
16.2.
Возврат типажа с dyn
16.3.
Перегрузка операторов
16.4.
Типаж Drop
16.5.
Итераторы
16.6.
impl Trait
16.7.
Типаж Clone
16.8.
Супертрейты
16.9.
Устранение неоднозначности в перекрывающихся трейтах
17.
macro_rules!
17.1.
Синтаксис
17.1.1.
Указатели
17.1.2.
Перегрузка
17.1.3.
Повторение
17.2.
DRY (Не повторяйся)
17.3.
DSL (Domain Specific Languages)
17.4.
Variadics
18.
Обработка ошибок
18.1.
panic
18.2.
Option & unwrap
18.2.1.
Разворачивание Option с ?
18.2.2.
Комбинаторы: map
18.2.3.
Комбинаторы: and_then
18.3.
Result
18.3.1.
map для Result
18.3.2.
Псевдонимы для Result
18.3.3.
Преждевременный выход
18.3.4.
Введение ?
18.4.
Несколько типов ошибок
18.4.1.
Получение Result из Option
18.4.2.
Объявление типа ошибки
18.4.3.
Упаковка ошибок (Box)
18.4.4.
Другие способы использования ?
18.4.5.
Оборачивание ошибок
18.5.
Итерирование по Result
19.
Типы стандартной библиотеки
19.1.
Box, стек и куча
19.2.
Вектора
19.3.
Strings
19.4.
Option
19.5.
Result
19.5.1.
?
19.6.
panic!
19.7.
HashMap
19.7.1.
Альтернативные (пользовательские) типы ключей
19.7.2.
HashSet
19.8.
Rc
20.
Разное в стандартной библиотеке
20.1.
Потоки
20.1.1.
Пример: map-reduce
20.2.
Каналы
20.3.
Path
20.4.
Файловый ввод-вывод
20.4.1.
open
20.4.2.
create
20.4.3.
read lines
20.5.
Дочерние процессы
20.5.1.
Pipes
20.5.2.
Ожидание
20.6.
Работа с файловой системой
20.7.
Аргументы программы
20.7.1.
Парсинг аргументов
20.8.
Foreign Function Interface
21.
Тестирование
21.1.
Unit-тестирование
21.2.
Тестирование документации
21.3.
Интеграционное тестирование
21.4.
dev-dependencies
22.
Unsafe операции
23.
Совместимость
23.1.
Сырые идентификаторы
24.
Meta
24.1.
Документация
24.2.
Playpen
Light (default)
Rust
Coal
Navy
Ayu
Rust By Example
Синтаксис
В следующем подразделе мы посмотрим как в Rust объявить макрос. Есть три основные идеи:
Шаблоны и указатели
Перегрузка
Повторение