← sudoto

Rust

Для тех, кому нужен предсказуемый системный язык: разбираемся с моделью памяти и доводим дело до работающих проектов.

8 модулей42 урока3 проекта
Открыть курс

Программа

  1. 01

    Основы и cargo

    Инструменты, синтаксис и привычки, без которых дальше не поедет.

    • 1.1 · Rustup, cargo и первый проект
    • 1.2 · Переменные, изменяемость и затенение
    • 1.3 · Числа, переполнение и приведение типов
    • 1.4 · Ветвления и циклы как выражения
    • 1.5 · Функции, модули и видимость
  2. 02

    Владение, заимствование и время жизни

    Сердце языка: кто владеет памятью, кто её одалживает и как читать ругань компилятора.

    • 2.1 · Стек, куча и владение
    • 2.2 · Перемещение, Copy и клонирование
    • 2.3 · Ссылки и правила заимствования
    • 2.4 · Изменяемое заимствование
    • 2.5 · Срезы: &str и &[T]
    • 2.6 · Время жизни ссылок
  3. 03

    Типы и сопоставление с образцом

    Как описывать данные структурами и перечислениями и разбирать их через match.

    • 3.1 · Структуры и методы
    • 3.2 · Перечисления как сумма типов
    • 3.3 · match и исчерпывающность
    • 3.4 · Образцы: if let, let else, while let
    • 3.5 · Option вместо null
  4. 04

    Коллекции и итераторы

    Vec, String, HashMap и ленивые цепочки, которые заменяют ручные циклы.

    • 4.1 · Vec: рост, доступ и заимствование элементов
    • 4.2 · String и &str на практике
    • 4.3 · HashMap и entry API
    • 4.4 · Итераторы: лень и цепочки
    • 4.5 · iter, iter_mut, into_iter и collect
  5. 05

    Ошибки: Option, Result и оператор ?

    Ошибка как обычное значение: где её обрабатывать, где пробрасывать и когда паниковать.

    • 5.1 · Result вместо исключений
    • 5.2 · Оператор ? и преобразование ошибок
    • 5.3 · Свой тип ошибки
    • 5.4 · anyhow и thiserror
    • 5.5 · Паника, unwrap и expect
  6. 06

    Трейты и обобщения

    Как писать код, работающий со многими типами, и как описывать общее поведение.

    • 6.1 · Обобщения и мономорфизация
    • 6.2 · Трейты: общее поведение
    • 6.3 · Границы трейтов и impl Trait
    • 6.4 · Ключевые трейты стандартной библиотеки
    • 6.5 · Статическая и динамическая диспетчеризация
    • 6.6 · Время жизни в структурах и сигнатурах
  7. 07

    Многопоточность и async

    Потоки, каналы, разделяемое состояние и асинхронные задачи на tokio.

    • 7.1 · Потоки и передача владения
    • 7.2 · Каналы
    • 7.3 · Arc, Mutex и трейты Send и Sync
    • 7.4 · async, await и рантайм
    • 7.5 · Задачи, конкурентность и отмена
  8. 08

    Внешний мир: файлы, HTTP, serde

    Всё, что нужно, чтобы программа читала данные, ходила в сеть и отвечала на запросы.

    • 8.1 · Файлы и потоковый ввод-вывод
    • 8.2 · Аргументы командной строки и clap
    • 8.3 · serde: JSON, TOML и разбор конфигов
    • 8.4 · HTTP-клиент на reqwest
    • 8.5 · Веб-сервис на axum и SQLite

Проект в конце

logscan — утилита разбора логов

Консольная утилита на Rust: разбирает логи потоком, считает статистику по уровням и умеет фильтровать по времени и образцу.

стартовый · 8-12 часов · 8 шагов

Другие направления

Python с нуляМашинное обучениеКибербезопасность