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#: полное учебное руководство

Подробное руководство по изучению Rust для разработчиков, которые уже знакомы с C#. Книга охватывает всё: от базового синтаксиса до продвинутых паттернов. Основной акцент сделан на концептуальных сдвигах и практических различиях между двумя языками.

Обзор курса

  • Аргументы в пользу Rust — зачем Rust важен для разработчиков C#: производительность, безопасность и корректность
  • Начало работы — установка, инструменты и первая программа
  • Базовые строительные блоки — типы, переменные, управление потоком выполнения
  • Структуры данных — массивы, кортежи, структуры, коллекции
  • Сопоставление с образцом и перечисления — алгебраические типы данных и исчерпывающее сопоставление
  • Владение и заимствование — модель управления памятью Rust
  • Модули и крейты — организация кода и зависимости
  • Обработка ошибок — распространение ошибок на основе Result
  • Трейты и обобщения — система типов Rust
  • Замыкания и итераторы — паттерны функционального программирования
  • Конкурентность — конкурентность без страха благодаря гарантиям системы типов, глубокое погружение в async/await
  • Unsafe Rust и FFI — когда и как выходить за рамки безопасного Rust
  • Паттерны миграции — реальные паттерны перехода с C# на Rust и постепенное внедрение
  • Лучшие практики — идиоматичный Rust для разработчиков C#

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

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

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

ГлавыТемаПримерное времяКонтрольная точка
1–4Настройка, типы, управление потоком выполнения1 деньВы можете написать CLI-конвертер температур на Rust
5–6Структуры данных, перечисления, сопоставление с образцом1–2 дняВы можете определить перечисление с данными и исчерпывающе разобрать его через match
7Владение и заимствование1–2 дняВы можете объяснить, почему let s2 = s1 делает s1 недействительным
8–9Модули, обработка ошибок1 деньВы можете создать многофайловый проект, который передаёт ошибки дальше с помощью ?
10–12Трейты, обобщения, замыкания, итераторы1–2 дняВы можете перевести цепочку LINQ в итераторы Rust
13Конкурентность и async1 деньВы можете написать потокобезопасный счётчик с Arc<Mutex<T>>
14Unsafe Rust, FFI, тестирование1 деньВы можете вызвать функцию Rust из C# через P/Invoke
15–16Миграция, лучшие практики, инструментыВ своём темпеСправочный материал — обращайтесь к нему при написании реального кода
17Итоговый проект1–2 дняУ вас есть работающая CLI-утилита, которая получает данные о погоде

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

  • В главах есть практические упражнения в сворачиваемых блоках <details> с решениями
  • Всегда сначала попробуйте решить упражнение и только потом раскрывайте решение. Борьба с проверщиком заимствований — часть обучения, а сообщения компилятора — ваш учитель
  • Если вы застряли больше чем на 15 минут, раскройте решение, изучите его, затем закройте и попробуйте снова с нуля
  • Rust Playground позволяет запускать код без локальной установки

Индикаторы сложности:

  • 🟢 Начальный — прямой перевод концепций из C#
  • 🟡 Средний — требует понимания владения или трейтов
  • 🔴 Продвинутый — времена жизни, внутреннее устройство async или unsafe-код

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

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

Оглавление

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

1. Введение и мотивация 🟢

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

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

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

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

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

7. Владение и заимствование 🟡

8. Крейты и модули 🟢

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

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

11. Трейты From и Into 🟡

12. Замыкания и итераторы 🟡


Часть II — Конкурентность и системное программирование

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

14. Unsafe Rust, FFI и тестирование 🟡


Часть III — Миграция и лучшие практики

15. Паттерны миграции и разборы случаев 🟡

16. Лучшие практики и справочник 🟡


Итоговый проект

17. Итоговый проект 🟡