- Кто такой Rust-разработчик?
- Что делают Rust-разработчики и чем занимаются?
- Что должен знать и уметь Rust-разработчик?
- Востребованность и зарплаты Rust-разработчиков
- Как стать Rust-разработчиком и где учиться?
- 10+ лучших курсов для обучения Rust-разработчика: подробный обзор
- 1 место. Курс «Rust Developer» — OTUS
- 2 место. Курс «Программирование на Rust» — НИУ ВШЭ
- 3 место.Курс «The Rust Programming Language» — Udemy
- Курс «Изучить Rust» — rust-lang
- Курс «Плагин для Rust» — JetBrains
- Курс «[rust] язык программирования» — Академия IT
- Курс «Руководство по языку программирования Rust» — metanit
- Курс «Learning Rust» — Dumindu Madunuwan
- Курс «Программирование на Rust» — Computer Science Center
- Курс «Rust для начинающих» — GitHub
- Курс «Уроки по языку программирования Rust» — rust_lang_ru
Кто такой Rust-разработчик?
Rust-разработчик — это программист на языке программирования Rust. Rust — это системный язык, основными особенностями которого являются быстрая обработка данных на компьютере и высокий уровень безопасности. Rust-разработчик может устранить большинство причин сбоев сервера.
Что делают Rust-разработчики и чем занимаются?
Обязанности на примере одной из вакансий:
- Создание нового функционала продукта;
- Участие в выдвижении технических решений задач, взаимодействие с командой;
- Участие в улучшении и оптимизации сценариев на локальных комплексах;
- Участие в проработке и улучшении архитектуры системы и API;
Что должен знать и уметь Rust-разработчик?
Требования к Rust-разработчикам:
- Умение взаимодействовать в команде и с бизнесом: прояснять требования, понимать за обратную совместимость API;
- понимание, зачем нужны и как настроить логи, метрики
- Умение писать SOLIDный код, желательно на Rust;
- Понимание async, async streams;
Востребованность и зарплаты Rust-разработчиков
На сайте поиска работы в данный момент открыто 179 вакансий, с каждым месяцем спрос на Rust-разработчиков растет.
Количество вакансий с указанной зарплатой Rust-разработчика по всей России:
- от 150 000 руб. – 79
- от 275 000 руб. – 50
- от 400 000 руб. – 30
- от 525 000 руб. – 22
- от 650 000 руб. – 13
Вакансий с указанным уровнем дохода по Москве:
- от 220 000 руб. – 36
- от 395 000 руб. – 22
- от 570 000 руб. – 13
- от 740 000 руб. – 8
- от 915 000 руб. – 2
Вакансий с указанным уровнем дохода по Санкт-Петербургу:
- от 255 000 руб. – 10
- от 455 000 руб. – 4
- от 555 000 руб. – 2
- от 655 000 руб. – 1
Как стать Rust-разработчиком и где учиться?
Варианты обучения для Rust-разработчика с нуля:
- Самостоятельное обучение – всевозможные видео на YouTube, книги, форумы, самоучители и т.д. Плюсы – дешево или очень недорого. Минусы – нет системности, самостоятельное обучение может оказаться неэффективным, полученные навыки могут оказаться невостребованными у работодателя;
- Онлайн-обучение. Пройти курс можно на одной из образовательных платформ. Такие курсы рассчитаны на людей без особой подготовки, поэтому подойдут большинству людей. Обычно упор в онлайн-обучении делается на практику – это позволяет быстро пополнить портфолио и устроиться на работу сразу после обучения.
Ниже сделали обзор 10+ лучших онлайн-курсов.
10+ лучших курсов для обучения Rust-разработчика: подробный обзор
Углублённый курс по языку программирования Rust, в котором мы разберем:
- ключевые особенности Rust, понимание которых позволяет не только разрабатывать сложные программные продукты на этом языке, но и помогает лучше проектировать ПО в целом;
- наиболее популярные библиотеки и проекты, широко используемые на практике;
- многопоточность и архитектуру программного обеспечения.
Курс будет интересен:
Разработчикам на системных языках (С, C++, …), которые хотят:
- изучить Rust, его сильные и слабые стороны;
- научиться избегать ошибки по работе с памятью и многопоточностью;
- изучить проектирование высокопроизводительного ПО
Разработчикам на интепретируемых или высокоуровневых языках (Python, JS, Java, C#, …), которые хотят:
- изучить язык, позволяющий делать критические по производительности секции вашего ПО максимально быстрыми;
- особенности работы с низкоуровневым ПО;
- подходы к разработке безопасного и отказоустойчивого ПО.
Чему вы научитесь на курсе?
- использовать язык Rust для разработки ПО;
- разворачивать Rust и среду разработки;
- создавать надёжное, отказоустойчивое и высокопроизводительное ПО;
- тестировать код;
- использовать сторонние библиотеки;
- писать асинхронный код.
Программа обучения
Модуль 1. Введение в Rust
- Тема 1. Основные концепции и особенности Rust
- Тема 2. Система сборки. Вспомогательные утилиты. Выбор среды разработки
- Тема 3. Базовый синтаксис
- Тема 4. Продвинутый синтаксис
Модуль 2. Модули, крейты и тесты
- Тема 5. Разбиение проекта на файлы и логические блоки. Тесты и примеры
- Тема 6. Пакеты и крейты
- Тема 7. Использование сторонних крейтов. Версии и features
Модуль 3. Стандартная библиотека
- Тема 8. Основные перечисления и типажи
- Тема 9. Умные указатели и коллекции
- Тема 10. Ввод и вывод
- Тема 11. Пишем клиент-серверное приложение
Модуль 4. Многопоточность
- Тема 12. Проблемы многопоточного кода. Запуск параллельного потока.
- Тема 13. Контроль корректности многопоточного приложения на стадии компиляции
- Тема 14. Пишем свой ThreadPool
- Тема 15. Типы многозадачности. Асинхронность
- Тема 16. Асинхонность под капотом
- Тема 17. Делаем клиент-серверное приложение асинхронным
- Тема 18. Межпроцессное взаимодействие и синхронизация
Модуль 5. Архитектура
- Тема 19. Rust и ООП
- Тема 20. Rust и ФП
- Тема 21. Обработка ошибок
- Тема 22. Инварианты
- Тема 23. Паттерны
Модуль 6. Фреймворки и библиотеки
- Тема 24. Популярные утилитарные библиотеки
- Тема 25. Логирование, отладка и профилирование
- Тема 26. Rust и Backend
- Тема 27. Rust и GUI
- Тема 28. Rust и GameDev
- Тема 29. Rust и Frontend
- Тема 30. Взаимодействие с другими языками
Модуль 7. Проектная работа
- Тема 31. Выбор темы и организация проектной работы
- Тема 32. Консультация по проектам и домашним заданиям
- Тема 33. Защита проектных работ
- Тема 34. Подведение итогов курса.
Выпускной проект
Задачи выпускного проекта:
- Сформулировать идею приложения или библиотеки;
- Разработать архитектуру проекта;
- Написать proof-of-concept код, демонстрирующий жизнеспособность текущего дизайна;
- Полноценно реализовать задуманный функционал, с документацией интерфейсов и тестами бизнес-логики;
- Разработать документацию и примеры использования кода;
- Опубликовать результаты работы на GitHub и на Crates.io.
Темы на выбор (+возможность предложить свою тему):
— Web backend
— Real-time data processing
— Image processing
— Data storage and caches.
После обучения вы:
- бессрочно получите материалы по всем пройденным занятиям (видеозаписи вебинаров, выполненные домашние задания, выпускной проект)
- получите сертификат об окончании курса
- получите приглашение пройти собеседование в компаниях-партнёрах (в случае успешного обучения).
Этот курс научит вас основам Rust, современного языка программирования, обладающего как мощью нативного кода, так и безопасностью некоторых управляемых языков.
В этом курсе вы узнаете следующее:
- Как скачать и установить Rust;
- Как компилировать программы и (опционально) работать с IDE.
- Узнаете о фундаментальных типах данных и о том, как использовать их для объявления переменных
- Поймете массивы, векторы и строки, понятие срезов
- Научитесь создавать функции, методы, замыкания, функции высшего порядка
- Поймете, как создавать различные структуры данных, такие как структуры и перечисления; также черты.
- Узнаете, как безопасно обмениваться данными вокруг вашего (возможно, многопоточного) приложения с Rc, Arc и Mutex.
- Используете пакетный менеджер Rust с помощью Cargo.
- Узнаете о других полезных темах: документация, условная компиляция, тестирование.
Цель освоения дисциплины — обучение основам Rust, современного языка программирования, обладающего как мощью нативного кода, так и безопасностью некоторых управляемых языков.
Планируемые результаты обучения:
- Знает, как установить и настроить Rust. Владеет понятием менеджер пакетов Cargo; Rust в IntelliJ IDEA
- Знает основные типы данных. Владеет понятиями: числа на компьютере; операторы; Scope и Shadowing; объявление и использование констант; стек и куча
- Знает конструкции if, while, for, match.
- Знает структуры, перечисления, союзы, оption <T>, массивы, векторы, срезы, HashMap. Умеет проводить сопоставление с образцом.
- Владеет понятиями: функции и аргументы функций; методы; замыкания; функции высшего порядка.
- Владеет понятиями: Traits; Into; Drop; перегрузка оператора; статическая рассылкa; динамическая отправка; Векторы разных объектов
- Владеет понятиями: право собственности; заимствование; продолжительность жизни; время жизни в реализации структуры. Знает переменные с атомной привязкой. Использует Mutex для поточно-ориентированной изменчивости
- Владеет понятием циркулярных ссылок.
Содержание учебной дисциплины:
- Введение в курс
- Типы и переменные
- Контроль потока
- Структуры данных
- Функции
- Traits
- Время жизни и память
- Расширенные темы.
Чему вы научитесь:
- Решайте проблемы в Rust
- Поймите сильные и слабые стороны Rust
- Эффективно используйте гарантии безопасности памяти Rust
- Написание приложений и библиотек
- Протестируйте и задокументируйте свой код.
Материалы курса:
12 разделов, 61 лекция
- Вступление
- Типы и переменные
- Поток управления
- Структуры данных
- Стандартные Коллекции
- Символы и строки
- Функции
- Черты
- Жизнь и память
- Дополнительные темы
- Совпадение
- Мелочи и концы
Основная документация:
- СТАНДАРТНАЯ БИБЛИОТЕКА
Полное руководство по API стандартной библиотеки. - РУКОВОДСТВО ПО РЕДАКЦИЯМ ЯЗЫКА
Руководство по редакциям Rust. - КНИГА ПО CARGO
Книга о пакетном менеджере и системе сборки Rust. - КНИГА ПО RUSTDOC
Узнайте, как создать удивительную документацию для вашего проекта. - КНИГА ПО RUSTC
Познакомьтесь с опциями, доступными в компиляторе Rust. - РУКОВОДСТВО ПО ОШИБКАМ КОМПИЛЯТОРА
Подробные объяснения ошибок, которые вы можете получить от компилятора.
С чего начать?
- «The Rust Programming Language», ласково называемая «книгой»
даст вам обзор языка начиная с базовых принципов. По ходу чтения вы создадите несколько проектов и к концу изучения получите твёрдое понимание языка. - Курс Rustlings
поможет вам в установке и настройке инструментов Rust, и обучит вас основам чтения и написания кода на Rust. Это альтернатива книге «Rust на примерах», которая работает с вашим собственным окружением. - «Rust на примерах» («Rust By Example», RBE).
Пока «Книга» большим количеством слов рассуждает о коде, RBE показывает куски кода и сводит рассуждения к минимуму. Также она содержит упражнения.
Адаптированный курс Rustlings
Этот курс поможет вам разобраться со всеми главными возможностями языка Rust: базовым синтаксисом, стандартной библиотекой, макросами, потоками, автоматизированными тестами и т. д.
Наша адаптация сохранила всю прелесть исходного курса, а вдобавок она познакомит вас со всеми возможностями для работы с Rust, которые только есть в IDE на базе IntelliJ — это умный редактор, автодополнение кода, вызов документации, рефакторинги и многое другое.
Уроки курса:
- Введение — установка, первая программа
- Переменные
- Типы данных
- Функции
- Условные выражения и циклы
- Чтение логов в реальном времени на RUST и запись данных в influxDB.
Глава 1. Введение в язык Rust
- Общий обзор языка программирования Rust. Установка
- Первая программа
Глава 2. Основы Rust
- Структура программы
- Переменные
- Типы данных
- Арифметические операции
- Поразрядные операции
- Условные выражения
- Конструкция if..else
- Конструкция match
- Циклы
- Функции
- Параметры функции
- Возвращение значения из функции
- Константы
- Анонимные функции
- Замыкания
- Тип функции
- Функция как параметр и результат другой функции
Глава 3. Составные типы данных
- Кортежи
- Массивы
- Структуры
- Структуры-кортежи
- Перечисления Enum
- Последовательность Range
- Паттерны и конструкция match
- Паттерны и конструкция if let
Глава 4. Ссылки и Ownership
- Контекст/область видимости
- Устройство памяти в Rust. Стек и куча
- Ownership
- Ссылки
- Изменяемые ссылки
- Slice
Глава 5. Объектно-ориентированное программирование
- Методы
- Ассоциированные функции
- Trait
- Trait как параметр и результат функции
- Обобщенные типы
- Обобщенные функции и методы
- Trait bound
Глава 6. Время жизни ссылки
- Аннотации и время жизни ссылки
- Аннотации ссылок в функциях
- Аннотации ссылок в структурах
- Аннотации ссылок в определениях методов
- Статическое время жизни
Глава 7. Коллекции
- Вектор
- String
- HashMap
Глава 8. Модули
- Определение модулей. Приватность и публичность
- Вложенные модули и ключевое слово super
- Оператор use и подключение модулей
- Определение модуля во внешнем файле
Глава 9. Обработка ошибок
- Макрос panic!
- Тип Result
- Методы unwrap и expect типа Result
- Обработка нескольких типов ошибок
- Оператор ?
Глава 10. Cargo
- Создание проекта с помощью Cargo
- Загрузка и использование внешних зависимостей
Глава 11. Ввод и вывод
- Ввод с клавиатуры
Глава 12. Unsafe-контекст
- Указатели.
- Basics
Installation, Hello World, Cargo, Crates, Variable bindings, Functions, Primitive Data Types, Operators & Control Flows. - Beyond the Basics
Vectors, Structs, Enums, Generics, Impls & Traits. - The Tough Part
Ownership, Borrowing, Lifetimes & Lifetime Elision. - Let’s Get It Started
Modules, Crates, Workspaces, std modules and Preludes. - Error Handling
Smart compiler, Panicking, Option & Result, Unwrap & Expect, Error & None propagation, Combinators and Custom Error Types. - Stay tuned!
More things are coming in 2021. Stay in touch.
- Курс знакомит слушателей с языком программирования Rust.
- Для курса необходимо уметь программировать на любом другом языке, например Python. Особенно хорошо курс сочетается с курсом по C++.
Цель курса не просто научить программировать на Rust, а сделать акцент на его особенностях и отличиях от более традиционных языков, и увидеть знакомые задачи с другого ракурса.
Предварительная программа курса:
- Зачем нужны языки программирования без сборщика мусора?
- Дисциплина владения, линейные типы, RAII.
- Ссылки и времена жизни.
- Механика языка: встроенные типы, выражения, алгебраические типы данных, macro by example.
- Модули, библиотеки и модель компиляции.
- Стратегии обработки ошибок.
- Параметрический полиморфизм, трейты, статичекое и динамическое связывание.
- FFI и unsafe.
- Реализация коллекций и итераторов.
- Надёжное многопоточное программирование.
- Стратегии управления памятью.
- Процедурные макросы.
Список лекций
- Введение
- Время жизни, ADT
- Трейты
- Модули
- Функции и итераторы
- Управление ошибками
- Объекты, строки
- Время жизни II
- Умные указатели, static
- Многопоточность
- unsafe
- Коллекции
- Макросы.
Это пошаговое руководство научит основам языка Rust. Для понимания содержания потребуется только знания основ программирования. Необходимо понимать, чем отличаются целые числа от дробных, суметь отличить название переменной от строковой константы и в общем виде понимать, что такое компилятор.
Оглавление:
- Привет, Rust!
- Арифметические вычисления
- Переменные
- Логический тип данных
- Выражение if
- Хранилища однотипных данных
- Использование простых типов данных в Rust
- Перечисления
- Кортежи и структуры
- Функция
- Обобщенные структуры и функции
- Использование различных мест хранения переменных
- Реализация типов данных в Rust
- Анонимные функции
- Строка
- Диапазон
- Срез
- Итератор
- Типаж.
Уроки:
- Введение — Rust язык программирования
- Установка и компиляция — Rust язык программирования
- Менеджер пакетов Cargo — Rust язык программирования
- Редактор исходного кода VS Code — Rust язык программирования
- Переменные — Rust язык программирования
- Типы данных — Rust язык программирования
- Функции — Rust язык программирования
- Конструкции управления — Rust язык программирования
- Владение — Rust язык программирования
- Ссылочные переменные — Rust язык программирования
- Срезы — Rust язык программирования
- Структуры — Rust язык программирования
- Перечисления — Rust язык программирования
- Операторы Match и If let — Rust язык программирования
- Модули Mod — Rust язык программирования
- Управление доступом — Rust язык программирования
- Импорт имён с Use — Rust язык программирования
- Векторы — Rust язык программирования
- Строки — Rust язык программирования
- Hash Maps — Rust язык программирования
- Обработка ошибок ч.1 — Rust язык программирования
- Обработка ошибок ч.2 — Rust язык программирования
- Шаблонные типы данных (Generics) — Rust язык программирования
- Типажи — Rust язык программирования
- Время жизни ссылок — Rust язык программирования
- Тестирование ч.1 — Rust язык программирования
- Тестирование ч.2 — Rust язык программирования
- Аргументы командной строки — Rust язык программирования
- Чтение файлов — Rust язык программирования
- Рефакторинг — Rust язык программирования
- Разработка через тестирование (TDD) — Rust язык программирования.