Rust - основы языка программирования
Напишете на Rust консольный менеджер задач, разбор HTTP-запроса с мини-роутером и вычисления в нескольких потоках. Rust чаще всего бросают на ошибках заимствования, поэтому владению и ссылкам отведён целый модуль с задачами. Решения проверяет компилятор Rust прямо в браузере: ставить ничего не нужно, курс бесплатный.
Чему вы научитесь
- Cargo: создавать проект, собирать и запускать его, читать Cargo.toml и подключать внешние крейты
- Типы и управление потоком: неизменяемость по умолчанию, затенение, кортежи и массивы, String и &str, if, loop, while и for
- Владение и заимствование: кто владеет значением, когда оно перемещается, чем &T отличается от &mut T и почему компилятор не даёт две изменяемые ссылки сразу
- Срезы: работать с частью строки или массива без копирования
- Структуры и перечисления: описывать данные предметной области, хранить данные в вариантах перечисления, разбирать их через match и if let
- Option и Result: отсутствующее значение и ошибка без null и исключений, оператор ? и случаи, когда уместен panic!
- Коллекции и итераторы: Vec, HashMap, filter, map, сортировка и группировка
- Трейты, дженерики и замыкания: общее поведение для разных типов, ограничения через impl Trait и where, стандартные Debug, Clone и PartialEq
- Потоки: thread::spawn и join, каналы mpsc, общее состояние через Arc и Mutex
Что вы напишете руками
Калькулятор, который читает числа из консоли, преобразует типы и выполняет выбранную операцию.
Функции обработки текста: подсчёт слов, обрезка с многоточием, капитализация. Всё на срезах, без лишних копий строк.
Предметная область на структурах и перечислениях: статусы заказа, стоимость доставки по региону, распределение запросов между серверами.
Консольный менеджер задач: добавление, отметка выполненных, фильтр по статусу и разбор команд пользователя.
Разбор сырого HTTP-запроса: стартовая строка, заголовки, мини-роутер по пути и сборка ответа.
Вычисления в нескольких потоках: сумма, разделённая между воркерами, сбор результатов через канал, общий список под Mutex.
Как проходит обучение
Урок чередует короткую теорию и практику на неё. Тесты проверяют, что вы поняли правило, задачи с кодом проверяют, что программа работает.
Решение отправляется прямо со страницы урока. Код компилируется настоящим компилятором Rust и прогоняется на тестах. Не прошло — исправляете и отправляете ещё раз.
В условии сказано, что прислать: программу целиком с fn main или одну функцию. В начале курса чаще пишется вся программа, дальше — отдельные функции, как в рабочем коде.
Для кого этот курс
Тем, кто впервые берётся за Rust
Разработчикам на Go, Python, Java или C++, которым нужен быстрый и безопасный системный язык
Тем, кто уже пробовал Rust и споткнулся о владение и заимствование
Начальные требования
Опыт на любом языке поможет, но курс начинается с первой программы
Ставить ничего не нужно: все задачи решаются в браузере. Установку Rust на свой компьютер разбираем в первом модуле, если захотите писать локально
Поддержка
Вы также можете задать любой вопрос по курсу у поддержки t.me/mentorix_support
Программа курса
Модулей: 7, уроков: 53. Задачи с кодом проверяются автоматически.
Первые шаги в Rust: установка, настройка и первый проект
- Что такое Rust и зачем его изучать
- Установка Rust и настройка окружения
- Создание первого проекта с Cargo
- Написание и запуск программы Hello, World!
- Структура проекта Rust и файл Cargo.toml
- Компиляция, сборка и запуск через Cargo
- Комментарии и базовое форматирование кода
Переменные, типы данных и управляющие конструкции
- Объявление переменных и неизменяемость по умолчанию
- Изменяемые переменные и затенение (shadowing)
- Скалярные типы данных: целые числа, числа с плавающей точкой, bool и char
- Составные типы данных: кортежи и массивы
- Работа со строками: String и строковые срезы
- Условные выражения if и else
- Циклы loop, while и for
- Ввод данных от пользователя и преобразование типов
- Практика: написание простого калькулятора
Функции, владение и ссылки
- Создание и вызов функций
- Параметры функций и возвращаемые значения
- Выражения и инструкции в теле функции
- Концепция владения (ownership) и правила владения
- Передача значений в функции и возврат владения
- Ссылки и заимствование: неизменяемые ссылки
- Изменяемые ссылки и ограничения заимствования
- Срезы (slices) как ссылки на часть данных
- Практика: функции для обработки текста
Структуры, перечисления и сопоставление с образцом
- Создание и использование структур (struct)
- Методы и ассоциированные функции для структур
- Создание и использование перечислений (enum)
- Перечисления с данными в вариантах
- Работа с Option для обработки отсутствующих значений
- Сопоставление с образцом через match
- Конструкция if let для упрощённого сопоставления
- Практика: моделирование предметной области с помощью структур и перечислений
Коллекции, обработка ошибок и модульная организация кода
- Работа с вектором Vec: создание, добавление и чтение элементов
- Работа с HashMap: хранение пар ключ-значение
- Итерирование по коллекциям и базовые методы итераторов
- Обработка ошибок с Result и оператором ?
- Использование panic! и когда оно уместно
- Разделение кода на модули и файлы
- Подключение внешних библиотек (crates) через Cargo
- Практика: создание консольного приложения — менеджер задач
Трейты, дженерики и замыкания
- Обобщённые функции и структуры (generics)
- Трейты: определяем общее поведение
- Трейты стандартной библиотеки: Debug, Clone, PartialEq
- Ограничения трейтов: impl Trait и where
- Замыкания: функции, которые помнят окружение
- Практика: итераторы и обработка данных
Потоки, каналы и первые шаги в сеть
- Потоки: thread::spawn и join
- Каналы mpsc: общение без общей памяти
- Общее состояние: Arc и Mutex
- HTTP глазами байтов: запрос и ответ
- Заголовки и мини-роутер
- Практика: разбираем HTTP-запрос целиком
Бесплатный курс
Открыть курс на Mentorix · Все курсы