Rust для программистов на Python: полное учебное руководство
Подробное руководство по изучению Rust для разработчиков, которые уже знакомы с Python. Книга охватывает всё: от базового синтаксиса до продвинутых паттернов. Основной акцент сделан на концептуальных сдвигах, которые происходят при переходе от языка с динамической типизацией и сборщиком мусора к системному языку со статической типизацией и проверкой безопасности памяти на этапе компиляции.
Как пользоваться этой книгой
Формат самостоятельного изучения: сначала пройдите часть I (гл. 1–6), она тесно связана с понятиями Python, которые вы уже знаете. Часть II (гл. 7–12) знакомит с идеями, специфичными для Rust, такими как владение и трейты. Часть III (гл. 13–16) посвящена продвинутым темам и миграции.
Рекомендации по темпу:
| Главы | Тема | Примерное время | Контрольная точка |
|---|---|---|---|
| 1–4 | Настройка, типы, управление потоком выполнения | 1 день | Вы можете написать CLI-конвертер температур на Rust |
| 5–6 | Структуры данных, перечисления, сопоставление с образцом | 1–2 дня | Вы можете определить перечисление с данными и исчерпывающе разобрать его через match |
| 7 | Владение и заимствование | 1–2 дня | Вы можете объяснить, почему let s2 = s1 делает s1 недействительным |
| 8–9 | Модули, обработка ошибок | 1 день | Вы можете создать многофайловый проект, который передаёт ошибки дальше с помощью ? |
| 10–12 | Трейты, обобщения, замыкания, итераторы | 1–2 дня | Вы можете перевести list comprehension в цепочку итераторов |
| 13 | Конкурентность | 1 день | Вы можете написать потокобезопасный счётчик с Arc<Mutex<T>> |
| 14 | Unsafe, PyO3, тестирование | 1 день | Вы можете вызвать функцию Rust из Python через PyO3 |
| 15–16 | Миграция, лучшие практики | В своём темпе | Справочный материал: обращайтесь к нему при написании реального кода |
| 17 | Итоговый проект | 2–3 дня | Создайте полноценное CLI-приложение, которое объединяет всё изученное |
Как работать с упражнениями:
- В главах есть практические упражнения в сворачиваемых блоках
<details>с решениями - Всегда сначала попробуйте решить упражнение и только потом раскрывайте решение. Борьба с borrow checker — часть обучения, а сообщения компилятора — ваш учитель
- Если вы застряли больше чем на 15 минут, раскройте решение, изучите его, затем закройте и попробуйте снова с нуля
- Rust Playground позволяет запускать код без локальной установки
Индикаторы сложности:
- 🟢 Начальный: прямой перевод понятий из Python
- 🟡 Средний: требует понимания владения или трейтов
- 🔴 Продвинутый: времена жизни, внутреннее устройство async или unsafe-код
Если вы упёрлись в стену:
- Внимательно читайте сообщение компилятора: ошибки Rust исключительно полезны
- Перечитайте нужный раздел. Концепции вроде владения (гл. 7) часто становятся понятны при втором прочтении
- Документация стандартной библиотеки Rust отличная: ищите любой тип или метод
- Более глубокие async-паттерны описаны в сопутствующем курсе Async Rust
Содержание
Часть I — Основы
1. Введение и мотивация 🟢
- Аргументы в пользу Rust для разработчиков на Python
- Частые проблемы Python, которые решает Rust
- Когда выбирать Rust вместо Python
2. Начало работы 🟢
3. Встроенные типы и переменные 🟢
4. Управление потоком выполнения 🟢
5. Структуры данных и коллекции 🟢
6. Перечисления и сопоставление с образцом 🟡
- Алгебраические типы данных и объединения типов
- Исчерпывающее сопоставление с образцом
- Option для безопасной работы с None
Часть II — Ключевые концепции
7. Владение и заимствование 🟡
- Понимание владения
- Семантика перемещения и подсчёт ссылок
- Заимствование и времена жизни
- Умные указатели
8. Крейты и модули 🟢
9. Обработка ошибок 🟡
10. Трейты и обобщения 🟡
11. Трейты From и Into 🟡
12. Замыкания и итераторы 🟡
Часть III — Продвинутые темы и миграция
13. Конкурентность 🔴
14. Unsafe Rust, FFI и тестирование 🔴
15. Паттерны миграции 🟡
- Частые паттерны Python в Rust
- Основные крейты для разработчиков на Python
- Стратегия постепенного внедрения
16. Лучшие практики 🟡
- Идиоматичный Rust для разработчиков на Python
- Частые ошибки и их решения
- Шпаргалка «Python → Rust»
- Путь обучения и ресурсы