Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Курс Rust для программистов на C/C++

Обзор курса

  • Обзор курса
    • Аргументы в пользу Rust (с точки зрения и C, и C++)
    • Локальная установка
    • Типы, функции, управление потоком выполнения, сопоставление с образцом
    • Модули, cargo
    • Трейты, обобщения
    • Коллекции, обработка ошибок
    • Замыкания, управление памятью, времена жизни, умные указатели
    • Конкурентность
    • Небезопасный Rust, включая Foreign Function Interface (FFI)
    • no_std и основы встраиваемого Rust для команд, разрабатывающих прошивки
    • Примеры из практики: типовые шаблоны перевода реального кода C++ на Rust
  • Асинхронный Rust в этом курсе не рассматривается — см. сопутствующий курс по Async Rust, где подробно разобраны футуры, исполнители, Pin, tokio и промышленные асинхронные шаблоны

Руководство для самостоятельного изучения

Материал подходит как для курса с преподавателем, так и для самостоятельного изучения. Если вы работаете с ним самостоятельно, вот как получить от него максимум пользы:

Рекомендации по темпу:

ГлавыТемаПримерное времяКонтрольная точка
1–4Настройка, типы, управление потоком выполнения1 деньВы можете написать CLI-конвертер температур
5–7Структуры данных, владение1–2 дняВы можете объяснить, почему let s2 = s1 делает s1 недействительной
8–9Модули, обработка ошибок1 деньВы можете создать многофайловый проект, который передаёт ошибки дальше с помощью ?
10–12Трейты, обобщения, замыкания1–2 дняВы можете написать обобщённую функцию с ограничениями трейтами
13–14Конкурентность, unsafe/FFI1 деньВы можете написать потокобезопасный счётчик с Arc<Mutex<T>>
15–16Углублённые темыВ своём темпеСправочный материал — читайте, когда это актуально
17–19Лучшие практики и справочникВ своём темпеОбращайтесь к нему, когда пишете реальный код

Как работать с упражнениями:

  • В каждой главе есть практические упражнения с указанием сложности: 🟢 Начальный, 🟡 Средний, 🔴 Сложный
  • Всегда сначала попробуйте решить упражнение и только потом раскрывайте решение. Борьба с проверкой заимствований — часть обучения, а сообщения компилятора — ваш учитель
  • Если вы застряли больше чем на 15 минут, раскройте решение, изучите его, затем закройте и попробуйте снова с нуля
  • Rust Playground позволяет запускать код без локальной установки

Если вы упёрлись в стену:

  • Внимательно читайте сообщение компилятора: ошибки Rust исключительно полезны
  • Перечитайте нужный раздел. Концепции вроде владения (гл. 7) часто становятся понятны при втором прочтении
  • Документация стандартной библиотеки Rust отличная: ищите любой тип или метод
  • Более глубокие асинхронные шаблоны описаны в сопутствующем курсе Async Rust

Содержание

Часть I — Основы

1. Представление и общий подход

2. Начало работы

3. Встроенные типы и переменные

4. Управление потоком выполнения

5. Структуры данных и коллекции

6. Сопоставление с образцом и перечисления

7. Владение и управление памятью

8. Модули и крейты

9. Обработка ошибок

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

11. Расширенные возможности системы типов

12. Функциональное программирование

13. Конкурентность

14. Небезопасный Rust и FFI

Часть II — Углублённые темы

15. no_std — Rust для bare metal

16. Примеры из практики: перевод реального кода C++ на Rust

Часть III — Лучшие практики и справочник

17. Лучшие практики

18. Семантические различия C++ → Rust

19. Макросы Rust