Курс на Stepik
Обложка курса «Rust для сеньоров» на Stepik
Бесплатно

Rust для сеньоров ★ 5.000

Открыть на
STEPIK.ORG

Продвинутый Rust для senior-разработчика: lifetimes, типовая система, unsafe, FFI, Future и Pin, Tokio, макросы, производительность, архитектура и лидерство.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Rust для сеньоров»Учеников на курсе 24
Сертификаты, выданные на курсе «Rust для сеньоров»Сертификатов выдано 0
Отзывы о курсе «Rust для сеньоров»Отзывов получено 1
Рейтинг курса «Rust для сеньоров»Рейтинг курса 5.000
Уроки в курсе «Rust для сеньоров»Количество уроков 126
Тесты в курсе «Rust для сеньоров»Количество квизов 602
Время прохождения курса «Rust для сеньоров»Время прохождения курса —
Обновления курса «Rust для сеньоров»Обновления курса — —
Дата публикации курса «Rust для сеньоров»Дата публикации курса — ———
Последнее обновление курса «Rust для сеньоров»Последнее обновление — ———
Сложность hard — ———

Содержание курса

Разделы в курсе «Rust для сеньоров» 17 разделов Уроки в курсе «Rust для сеньоров» 126 уроков Тесты в курсе «Rust для сеньоров» 602 теста Время прохождения курса «Rust для сеньоров» 0 ч. Последнее обновление курса «Rust для сеньоров» обн. 19 июля 2026

Модуль 1. От мидла к сеньору: что меняется

7 уроков
1. Кто такой сеньор в Rust: не синтаксис, а решения и… ↗
2. Ревизия базы: владение, заимствование и время жизни за пять… ↗
3. Ревизия базы: трейты, дженерики и обработка ошибок одним… ↗
4. Мономорфизация против динамической диспетчеризации: цена… ↗
5. Zero-cost абстракции: что это значит на самом деле и где… ↗
6. Читаем чужой код: как быстро понять большой незнакомый крейт ↗
7. Карта курса: от внутреннего устройства языка к архитектуре и… ↗

Модуль 2. Времена жизни на глубину

8 уроков
1. Вспоминаем лайфтаймы: почему компилятор иногда не может их… ↗
2. Подтипизация лайфтаймов: когда 'long подходит вместо 'short ↗
3. Вариантность: ковариантность, контравариантность и… ↗
4. Почему &mut T инвариантен по T и к чему это приводит ↗
5. Ограничение 'static: что оно значит и чего не значит ↗
6. HRTB: границы for<'a> и зачем они замыканиям ↗
7. Лайфтаймы в трейт-объектах: Box и правила… ↗
8. Разбор реальных ошибок borrow checker уровня сеньора ↗

Модуль 3. Продвинутые трейты и система типов

8 уроков
1. Ассоциированные типы против параметров типа: когда что выбирать ↗
2. Обобщённые ассоциированные типы (GAT): лайфтайм в… ↗
3. Когерентность и orphan rule: почему нельзя impl всё для всего ↗
4. Blanket impls: одна реализация для целого семейства типов ↗
5. Маркерные трейты и PhantomData: типы-призраки без данных ↗
6. Sealed-трейты: закрываем трейт от внешней реализации ↗
7. Типовые состояния (typestate): некорректный вызов не… ↗
8. Newtype и делегирование: заворачиваем чужие типы под свой… ↗

Модуль 4. Unsafe Rust: контракт с компилятором

9 уроков
1. Что даёт и чего не даёт ключевое слово unsafe ↗
2. Сырые указатели *const и *mut: создание и разыменование ↗
3. Инварианты безопасности: почему каждый unsafe нужен с /// #… ↗
4. Undefined behavior: список того, что нельзя делать никогда ↗
5. UnsafeCell: единственный легальный путь к внутренней… ↗
6. Пишем безопасную абстракцию поверх unsafe: пример буфера ↗
7. union и работа с сырым представлением памяти ↗
8. Miri: ловим UB, которое не видит обычный компилятор ↗
9. Когда unsafe действительно оправдан, а когда это лень ↗

Модуль 5. FFI: Rust и внешний мир

9 уроков
1. Зачем нужен FFI и какие гарантии на границе теряются ↗
2. extern "C" и объявление внешних функций ↗
3. #[repr(C)]: предсказуемая раскладка структур для C ↗
4. Передача строк через границу: CStr, CString и нулевой байт ↗
5. Владение через границу FFI: кто и когда освобождает память ↗
6. Экспорт Rust-функций для C: #[no_mangle] и заголовки через… ↗
7. Генерация биндингов к C-библиотеке через bindgen ↗
8. Оборачиваем C-библиотеку в безопасный идиоматичный Rust-крейт ↗
9. Паники через границу FFI и как их не выпустить наружу ↗

Модуль 6. Асинхронность изнутри

7 уроков
1. Future как машина состояний: во что превращается async fn ↗
2. Трейт Future, poll и тип Poll ↗
3. Waker и контекст: как задача узнаёт, что пора продолжить ↗
4. Самоссылающиеся структуры и почему они ломают перемещение ↗
5. Pin и Unpin: закрепляем значение в памяти ↗
6. Пишем свой Future и простейший исполнитель вручную ↗
7. async в трейтах: что изменилось и где всё ещё нужен Box ↗

Модуль 7. Async в проде с Tokio

9 уроков
1. Рантайм Tokio: планировщик, задачи и work-stealing ↗
2. spawn, spawn_blocking и где живёт ваш код ↗
3. Каналы Tokio: mpsc, oneshot, broadcast и watch ↗
4. select!: гонка нескольких веток и её ловушки ↗
5. Отмена задачи: что происходит при drop незавершённого Future ↗
6. Backpressure и ограниченные каналы против переполнения памяти ↗
7. Stream: асинхронный аналог итератора ↗
8. Структурированная конкурентность: JoinSet и корректное… ↗
9. Диагностика async: где утекают задачи и зависают локи ↗

Модуль 8. Макросы: код, пишущий код

8 уроков
1. macro_rules! на глубину: фрагменты, повторения и рекурсия ↗
2. Гигиена макросов: почему имена не конфликтуют ↗
3. Границы декларативных макросов: когда нужен процедурный ↗
4. Устройство процедурного макроса: TokenStream на входе и выходе ↗
5. syn и quote: парсим синтаксис и генерируем код ↗
6. Пишем derive-макрос: генерируем impl по структуре ↗
7. Атрибутные макросы: #[my_attr] над функцией или типом ↗
8. Функциональные макросы и отладка через cargo expand ↗

Модуль 9. Производительность: измеряй, потом оптимизируй

7 уроков
1. Дисциплина оптимизации: сначала измерение, потом гипотеза ↗
2. criterion: честный бенчмарк вместо секундомера ↗
3. Профилирование через perf и чтение flamegraph ↗
4. Раскладка памяти структур: выравнивание, padding и #[repr] ↗
5. Кэш процессора: почему массив быстрее списка ↗
6. Предсказание ветвлений и цена непредсказуемых if ↗
7. Избегаем аллокаций: переиспользование буферов и SmallVec ↗

Модуль 10. Производительность: продвинутые техники

7 уроков
1. Инлайнинг и #[inline]: помощь компилятору без вреда ↗
2. SIMD: автовекторизация и явные интринсики ↗
3. Кастомные аллокаторы и глобальный #[global_allocator] ↗
4. Арены и пулы объектов для предсказуемого выделения ↗
5. Копирование против перемещения: где прячутся лишние копии ↗
6. Bounds checks: когда они стоят дорого и как честно их убрать ↗
7. Замер до и после: как не соврать себе про ускорение ↗

Модуль 11. Архитектура больших систем

8 уроков
1. Границы модулей и направление зависимостей в большом крейте ↗
2. Гексагональная архитектура: порты и адаптеры на трейтах ↗
3. DDD на Rust: моделируем домен типами, а не комментариями ↗
4. Делаем недопустимые состояния непредставимыми на уровне домена ↗
5. Дизайн ошибок в большой системе: слои и преобразование ошибок ↗
6. thiserror для доменных ошибок, anyhow на границе приложения ↗
7. Инъекция зависимостей через дженерики против трейт-объектов ↗
8. Организация workspace: несколько крейтов в одном репозитории ↗

Модуль 12. Проектирование и публикация библиотек

8 уроков
1. Проектирование публичного API: что легко изменить, а что… ↗
2. Semver на практике: что считается ломающим изменением ↗
3. #[non_exhaustive]: оставляем себе право на расширение ↗
4. Feature-флаги: опциональная функциональность без раздувания ↗
5. Условная компиляция через cfg и совместимость с no_std ↗
6. Документация как контракт: /// , примеры и doctest ↗
7. #[must_use], #[deprecated] и другие сигналы пользователю API ↗
8. Публикация на crates.io: метаданные, лицензия и первый релиз ↗

Модуль 13. Распределённые и сервисные системы

8 уроков
1. Модель акторов на Tokio: задача, почтовый ящик и сообщения ↗
2. Backpressure в распределённой системе: где ставить границы ↗
3. tracing: структурированные спаны вместо строчек логов ↗
4. Метрики: счётчики, гистограммы и что вообще стоит мерить ↗
5. Наблюдаемость: связываем логи, метрики и трассировку ↗
6. gRPC и tonic: обзор RPC на Rust (это не курс по gRPC) ↗
7. Обзор брокеров сообщений и Kafka с точки зрения Rust-сервиса ↗
8. Graceful shutdown сервиса: дожидаемся, а не рубим ↗

Модуль 14. no_std, встраиваемый Rust и WebAssembly

7 уроков
1. Что такое no_std и почему исчезает половина стандартной… ↗
2. core и alloc: что остаётся без std ↗
3. Обзор встраиваемого Rust: регистры, прерывания и отсутствие кучи ↗
4. panic и обработка ошибок в среде без std ↗
5. WebAssembly как цель компиляции: обзор модели ↗
6. wasm-bindgen: мост между Rust и JavaScript (обзор) ↗
7. Границы применимости: где Rust в браузере уместен, а где нет ↗

Модуль 15. Лидерство и рост в команде

6 уроков
1. Код-ревью как инструмент роста команды, а не поиска вины ↗
2. Менторство: как объяснять borrow checker, не отпугивая новичка ↗
3. Технические решения и RFC: аргументируем письменно ↗
4. Читаем исходники стандартной библиотеки и популярных крейтов ↗
5. Первый вклад в open-source: issue, PR и общение с мейнтейнером ↗
6. Управление техническим долгом и unsafe в чужом коде ↗

Модуль 16. Итоговый проект: высокопроизводительный сервис

6 уроков
1. Проект: постановка задачи и архитектурные решения сервиса ↗
2. Проектируем API и доменную модель на типах ↗
3. Реализуем async-ядро на Tokio с корректной отменой ↗
4. Добавляем наблюдаемость: tracing, метрики и graceful shutdown ↗
5. Профилируем и оптимизируем горячий путь по данным ↗
6. Пишем тесты, бенчмарки и документацию к релизу ↗

Модуль 17. Карта дальнейшего роста

4 урока
1. Экосистема Rust: куда смотреть по каждому направлению ↗
2. Специализации: системщик, веб, встраиваемый, WASM, инструменты ↗
3. Как язык развивается: edition, RFC-процесс и участие в нём ↗
4. Держим форму: как оставаться в курсе и расти дальше ↗