Курс на 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. Держим форму: как оставаться в курсе и расти дальше