Официальный гид по языку программирования Rust от команды разработчиков Rust из Mozilla Foundation.
Добро пожаловать в мир Rust!
Этот официальный гид поможет вам создавать более быстрое и надежное программное обеспечение. Высокоуровневая эргономика и низкоуровневое управление часто противоречат друг другу, но Rust бросает вызов этому конфликту.
Авторы книги входят в команду разработчиков языка, а значит, вы получите всю информацию из первых рук — от установки языка до создания надежных и масштабируемых программ. От создания функций, выбора типов данных и привязки переменных вы перейдете к более сложным концепциям:
- Владение и заимствование, жизненный цикл и типажи.
- Гарантированная безопасность программ.
- Тестирование, обработка ошибок и эффективный рефакторинг.
- Обобщения, умные указатели, многопоточность, типажные объекты и сопоставления.
- Работа со встроенным менеджером пакетов Cargo для создания, тестирования, документирования кода и управления зависимостями.
- Продвинутые средства работы с Unsafe Rust.
Вы найдете множество примеров кода, а также три главы, посвященные созданию полноценных проектов для закрепления знаний: игры-угадайки, создание инструмента командной строки и многопоточного сервера.
Author(s): Клабник Стив, Николс Кэрол
Series: Для профессионалов
Edition: 1
Publisher: Питер
Year: 2021
Language: Russian
Commentary: NOTE 1: file nav.xhtml has broken syntax; NOTE 2: HTML version https://doc.rust-lang.ru/book
Pages: 592
City: Москва
Tags: Rust; Раст; Язык программирования Rust; Rust 1.67.1+
Язык программирования Rust
Предисловие
Введение
1. С чего начать
1.1. Установка
1.2. Привет, мир!
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
7. Управление растущими проектами с помощью пакетов, крейтов и модулей
7.1. Пакеты и крейты
7.2. Определение модулей для управления областью действия и конфиденциальностью
7.3. Пути для ссылки на элемент в дереве модулей
7.4. Введение путей в область видимости с помощью ключевого слова use
7.5. Разделение модулей на разные файлы
8. Общие коллекции
8.1. Хранение списков значений с векторами
8.2. Хранение закодированного текста UTF-8 со строками
8.3. Хранение ключей со связанными значениями в HashMap
9. Обработка ошибок
9.1. Неустранимые ошибки с panic!
9.2. Устранимые ошибки с Result
9.3. panic! или не 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. Запись сообщений об ошибках в stderr вместо stdout
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 для указания на данные в куче
15.2. Работа с умными указателями как с обычными ссылками с помощью трейта Deref
15.3. Выполнение кода при очистке с помощью трейта Drop
15.4. Rc, умный указатель с подсчётом ссылок
15.5. RefCell и внутренняя изменяемость
15.6. Ссылочные циклы могут привести к утечке памяти
16. Безбоязненный параллелизм
16.1. Использование потоков для параллельного выполнения кода
16.2. Пересылка сообщений для передачи данных между потоками
16.3. Параллелизм с общим состоянием
16.4. Расширяемый параллелизм с помощью трейтов Sync и Send
17. Возможности объектно-ориентированного программирования Rust
17.1. Характеристики объектно-ориентированных языков
17.2. Использование трейт-объектов, допускающих значения разных типов
17.3. Реализация шаблона объектно-ориентированного проектирования
18. Шаблоны и сопоставление
18.1. Все места, где могут использоваться шаблоны
18.2. Опровержимость: может ли шаблон не соответствовать
18.3. Синтаксис шаблона
19. Расширенные возможности
19.1. Небезопасный код в Rust
19.2. Продвинутые типажи
19.3. Продвинутые типы
19.4. Продвинутые функции и замыкания
19.5. Макросы
20. Финальный проект: создание многопоточного веб-сервера
20.1. Создание однопоточного веб-сервера
20.2. Превращение нашего однопоточного сервера в многопоточный сервер
20.3. Мягкое завершение работы и очистка
21. Приложения
21.1. А — Ключевые слова
21.2. B — Операторы и символы
21.3. C — Выводимые трейты
21.4. D — Полезные инструменты разработки
21.5. E — Редакции
21.6. F — Переводы книги
21.7. G — Как создаётся Rust и «Nightly Rust»