Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Async Rust: от Future до продакшена

О проекте

  • Курс основан на оригинальных материалах Rust Training. Лицензии: MIT (код) и CC-BY-4.0 (текст).
  • Русский перевод и адаптация выполнены участниками проекта RustTraining-Rus.
  • Замечания и исправления присылайте через Issues и Pull Requests репозитория.

Подробное руководство по асинхронному программированию в Rust. В отличие от большинства туториалов по async, которые начинаются с tokio::main и обходят внутреннее устройство стороной, эта книга строит понимание с первых принципов: трейт Future, опрос (polling), конечные автоматы — и только потом переходит к практическим паттернам, выбору рантайма и продакшен-ловушкам.

Для кого эта книга

  • Разработчики на Rust, которые уверенно пишут синхронный код, но путаются в async
  • Разработчики из C#, Go, Python или JavaScript, которые знают async/await, но не знают модели Rust
  • Все, кто натыкался на Future is not Send, Pin<Box<dyn Future>> или вопрос «почему программа зависла?»

Предварительные требования

Вы должны уверенно владеть:

  • Владением, заимствованием и временами жизни (lifetimes)
  • Трейтами и обобщёнными типами (включая impl Trait)
  • Типом Result<T, E> и оператором ?
  • Базовой многопоточностью (std::thread::spawn, Arc, Mutex)

Предыдущий опыт асинхронного Rust не нужен.

Как пользоваться этой книгой

При первом чтении идите по порядку. Части I–III опираются друг на друга. Каждая глава содержит:

СимволЗначение
🟢Начальный уровень — базовое понятие
🟡Средний уровень — требует знания предыдущих глав
🔴Продвинутый уровень — глубокие внутренние механизмы или продакшен-паттерны

В каждой главе есть:

  • Блок «Что вы узнаете» в начале
  • Диаграммы Mermaid для тех, кто лучше воспринимает визуально
  • Встроенное упражнение со скрытым решением
  • Ключевые выводы, которые суммируют основные идеи
  • Перекрёстные ссылки на связанные главы

План изучения

ГлавыТемаПримерное времяКонтрольная точка
1–5Как работает async6–8 чВы можете объяснить Future, Poll, Pin и то, почему в Rust нет встроенного рантайма
6–10Экосистема6–8 чВы можете написать фьючи вручную, выбрать рантайм и использовать API tokio
11–13Async в продакшене6–8 чВы можете писать продакшен-код с потоками, корректной обработкой ошибок и graceful shutdown
ИтогЧат-сервер4–6 чВы создали реальное асинхронное приложение, объединяющее все концепции

Общее расчётное время: 22–30 часов

Работа с упражнениями

Каждая содержательная глава содержит встроенное упражнение. Итоговый проект (гл. 17) объединяет всё в одном приложении. Для максимальной пользы:

  1. Сначала решите упражнение, и только потом раскрывайте решение — именно в процессе борьбы с задачей и происходит обучение
  2. Набирайте код, а не копируйте его — для синтаксиса Rust важна мышечная память
  3. Запускайте каждый пример — cargo new async-exercises и проверяйте по ходу чтения

Содержание

Часть I: Как работает async

Часть II: Экосистема

Часть III: Async в продакшене

Приложения