Перейти к содержимому

Что изучать дальше в Rust

Если ты прошёл темы этого курса, ты уже знаешь Rust достаточно, чтобы писать настоящие программы: переменные, управление потоком, функции, владение, заимствование, коллекции, модули, обработка ошибок, трейты, обобщения и даже потоки, умные указатели, unsafe и макросы. Это действительно большая часть того, чем ты будешь пользоваться каждый день. Остаётся в основном практика и знания о конкретных библиотеках, которые ты будешь набирать по мере надобности.

Быстрее всего учиться дальше так: выбрать небольшой проект и пару раз в нём застрять. На этом сайте есть пять проектов с пошаговым разбором, с них и начни:

Когда закончишь с ними, попробуй что-нибудь сам:

  • Простой калькулятор — практика с match, Result и обработкой ошибок при неверном вводе.
  • Чтение JSON-конфига — загрузи настройки из файла с помощью Serde.
  • Крошечный веб-скрейпер или API-клиент — загрузи страницу по URL через reqwest поверх async/await.

Не знаешь, какую программу хочешь написать? Страницы раздела «Что можно создать» показывают, в чём Rust силён и какие крейты для этого используют: работа с сетью, базы данных, настольные GUI-приложения, игры и микроконтроллеры.

Хочешь сначала потренироваться на мелочах? Реши упражнения или проверь себя на вопросах для собеседования.

Экосистема пакетов Rust (крейты, которые распространяются через crates.io) покрывает почти всё, для чего тебе может понадобиться библиотека. Вот несколько, которые встречаются постоянно:

Любой из них добавляется в проект командой cargo add <имя крейта> — отдельный менеджер пакетов не нужен. Как это работает и как выбрать хороший крейт, объясняет урок Cargo и крейты. Документация всех этих крейтов — на английском.

Этот курс зашёл дальше, чем большинство учебников для начинающих: умные указатели, потоки и каналы, async/await, unsafe Rust, вызов C (FFI), WebAssembly и свои макросы macro_rules!. У нескольких более глубоких тем есть отдельные страницы — на тот случай, когда ты будешь готов:

  • Процедурные макросы — более мощный (и более сложный) родственник макросов macro_rules! из урока Макросы; именно они стоят за #[derive(Debug)] и похожими вещами
  • no_std и встраиваемый Rust — Rust без стандартной библиотеки, для микроконтроллеров и других сред с ограниченными ресурсами

Ничто из этого не нужно, чтобы писать полезный код на Rust. Просто стоит знать, что такое существует, и разобраться, когда действительно столкнёшься с задачей, которой это нужно.

  • Книга «Язык программирования Rust» (перевод на русский) — пройди её ещё раз теперь, когда основы улеглись в голове; со второго раза многое станет понятнее
  • Rust на примерах (перевод на русский) — ещё больше кода с пояснениями
  • Rustlings (на английском) — маленькие упражнения, которые ты исправляешь прямо в терминале
  • This Week in Rust (на английском) — еженедельная рассылка о том, что создаёт сообщество

Ты всё равно будешь встречать ошибки компилятора, которые сбивают с толку, и это нормально. Такое случается и с теми, кто пишет на Rust годами, а не только с новичками. Опыт не избавляет от ошибок — он помогает быстрее их читать. Продолжай писать код, продолжай читать, что говорит компилятор, и с каждым разом будет всё легче. Если застрянешь, загляни в раздел Ошибки компилятора Rust с объяснениями.

Удачи, и спасибо, что дошёл до этого места. 🦀

Проверь себя

1. Какой крейт здесь рекомендуют для чтения и записи JSON?

2. Какой крейт упоминается для асинхронного программирования?

3. Какую из этих тем страница называет темой, которой курс НЕ касался?

Результат: 0 / 3