Что изучать дальше в Rust
Если ты прошёл темы этого курса, ты уже знаешь Rust достаточно, чтобы писать настоящие программы: переменные, управление потоком, функции, владение, заимствование, коллекции, модули, обработка ошибок, трейты, обобщения и даже потоки, умные указатели, unsafe и макросы. Это действительно большая часть того, чем ты будешь пользоваться каждый день. Остаётся в основном практика и знания о конкретных библиотеках, которые ты будешь набирать по мере надобности.
Напиши что-нибудь небольшое
Заголовок раздела «Напиши что-нибудь небольшое»Быстрее всего учиться дальше так: выбрать небольшой проект и пару раз в нём застрять. На этом сайте есть пять проектов с пошаговым разбором, с них и начни:
- Игра «Угадай число» — классический первый проект на Rust: ввод, циклы и
match. - Счётчик слов — читаем текстовый файл и считаем слова с помощью
HashMap. - Список дел в терминале — практика с
Vec,struct,enumи сохранением в файл. - CLI-утилита на clap — настоящий инструмент командной строки с подкомандами и
--help. - Веб-API на Axum — JSON-API-сервер на основе async/await.
Когда закончишь с ними, попробуй что-нибудь сам:
- Простой калькулятор — практика с
match,Resultи обработкой ошибок при неверном вводе. - Чтение JSON-конфига — загрузи настройки из файла с помощью Serde.
- Крошечный веб-скрейпер или API-клиент — загрузи страницу по URL через
reqwestповерх async/await.
Не знаешь, какую программу хочешь написать? Страницы раздела «Что можно создать» показывают, в чём Rust силён и какие крейты для этого используют: работа с сетью, базы данных, настольные GUI-приложения, игры и микроконтроллеры.
Хочешь сначала потренироваться на мелочах? Реши упражнения или проверь себя на вопросах для собеседования.
Крейты, о которых стоит знать
Заголовок раздела «Крейты, о которых стоит знать»Экосистема пакетов Rust (крейты, которые распространяются через crates.io) покрывает почти всё, для чего тебе может понадобиться библиотека. Вот несколько, которые встречаются постоянно:
serde— чтение и запись JSON (и других форматов); см. JSON и Serdeclap— разбор аргументов командной строки; см. проект с clapanyhow/thiserror— обработка ошибок в приложениях и библиотеках; см. anyhow и thiserrorrand,regexиchrono— случайные числа, регулярные выражения и даты; см. Случайные числа, Регулярные выражения и Дата и времяlog/tracing— логирование; см. Логированиеreqwest— HTTP-запросыtokio— асинхронное программирование; см. Async/Await
Любой из них добавляется в проект командой 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