Улучшаемые навыки
Rust
Управление памятью (Ownership/Lifetimes)
Асинхронное программирование
Финтех-разработка
Highload
Многопоточность
Профилирование производительности (flamegraph)
Zero-copy десериализация
Микросервисная архитектура
Безопасность кода
Чему вы научитесь
01
Использовать язык Rust для безопасной и быстрой разработки ПО.
02
Управлять памятью без сборщика мусора, используя систему владения (ownership), заимствования (borrowing) и умные указатели (Box, Rc, Arc).
03
Проектировать надежную архитектуру с использованием алгебраических типов (Option, Result) и паттернов Rust (RAII, state machine).
04
Разрабатывать асинхронные потоковые сервисы на Tokio, управляя задачами, каналами (mpsc) и воркерами.
05
Парсить данные из CSV/JSON синхронно внутри асинхронного контекста с помощью библиотеки nom.
06
Внедрять gRPC- и REST-интерфейсы для отдачи агрегированных метрик.
07
Оптимизировать горячие пути и снижать количество аллокаций с помощью профилировщиков; использовать unsafe только при доказанной необходимости и после исчерпания safe-альтернатив.
Программа курса
01
Часть 1. Основы, владение, умные указатели и паттерны
1. Введение и отличия от C/C++ и других языков программирования
Особенности языка Rust и область применения. Безопасность памяти без сборщика мусора.
Сравнительный анализ: владение, borrow checker, move по умолчанию, pattern matching, трейты, алгебраические типы.
Установка toolchain.
2. Базовый синтаксис и система типов
Быстрый повтор для опытных по темам:
скалярные и составные типы, неизменяемость,
функции, управление потоком,
String и &str, срезы.
3. Владение, заимствование и времена жизни
Правила владения (ownership): перемещение (move), копирование (copy), типаж Clone.
Ссылки и заимствование — основные правила (одна &mut или много &)
Аннотации времён жизни (lifetimes).
Сквозной пример: безопасная передача транзакции с использованием ownership и lifetimes.
4. Структуры, перечисления и обработка ошибок
Использование struct, enum, match, Option, Result, оператора и крейта thiserror для реализации принципов надёжного банковского ПО.
5. Коллекции, итераторы и функциональный стиль
Vec, HashMap. Итераторы и адаптеры.
Ленивые вычисления, создание собственных итераторов.
Пакетная обработка записей из банковской выписки.
Старт сквозного проекта на основе обработки выписки.
6. Smart Pointers и interior mutability
Box, Rc, Arc, RefCell, Cell, OnceCell, Weak.
Примеры: разделяемый кэш (Rc/Arc), разрыв циклических связей (Weak), отложенная инициализация (OnceCell).
7. Обобщения, типажи и паттерны Rust
Generics, trait, impl Trait, trait objects. Стандартные типажи.
Паттерны проектирования в Rust: RAII, билдер, newtype, стратегия, state machine через enum.
Особенности системы трейтов (orphan rule, coherence, связанные типы).
8. Unsafe Rust: зачем и как применять
Сырые указатели, unsafe-блоки и функции.
Когда оправдан unsafe: оптимизация горячих путей, взаимодействие с памятью (FFI, низкоуровневые структуры).
Создание безопасных обёрток.
9. Сквозной проект: старт и первое код ревью + консультация
Разработка синхронной логики приложения (структуры, парсинг CSV/JSON, итераторы, обработка ошибок).
Код-ревью с разбором типичных ошибок владения и паттернов.
02
Часть 2. Асинхронность, парсинг, профилирование и финальный проект
10. Асинхронное программирование с Tokio
Future, async/await. Рантайм Tokio, спавн задач, JoinSet.
Таймауты, select!. Отмена и CancellationToken.
Планировщик и worker threads.
11. Асинхронные потоки и каналы
Трейты Stream и Sink.
Каналы: mpsc (многопродюсерный), broadcast (вещательный), watch (одно значение).
Потоковая обработка данных из файлов/сети. Интеграция с синхронным кодом (spawn_blocking).
12. Особенности построения асинхронных процессов
Паттерны: акторная модель на каналах, пул воркеров, конвейерная обработка.
Управление временем жизни задач, Send-границы.
Обработка ошибок и graceful shutdown.
13. Асинхронный парсинг и работа с памятью
Использование синхронного парсера nom внутри асинхронного контекста (с буферизацией).
Потоковый разбор протоколов: конечные автоматы, буферизация, работа с частичными данными.
Zero-copy десериализация (через слайсы и Bytes) и управление буферами.
Профилирование аллокаций (dhat, heaptrack, massif).
14. Сквозной проект: асинхронная реализация
Переход от синхронного ядра к асинхронному сервису.
Добавление gRPC/REST-интерфейса.
Интеграция с асинхронными каналами.
Обработка потока транзакций.
15. Обратная связь и разбор решений
Ревью кода проекта, обсуждение архитектурных альтернатив, ответы на вопросы, коллективный разбор лучших практик.
16. Производительность, профилирование и бенчмаркинг
Инструменты: criterion, flamegraph, perf.
Поиск узких мест в асинхронном коде, снижение аллокаций.
Бенчмарки парсинга и обработки.
03
Итого на курс часов 40 ак. ч.: теория — 15 ак. ч. (37,5%), практика — 25 ак. ч. (62,5%)
Для кого
Разработчик
Руководитель группы\Тимлид
Предварительная подготовка
Опыт коммерческой разработки на C/C++ или других языках (понимание ручного управления памятью или работы сборщика мусора) от 1,5 лет.
До старта курса желательно ознакомиться с бесплатными ресурсами: The Rust Programming Language, Rust by Example, Rustlings, The Rustonomicon, Rust Design Patterns.