Наткнулся на скрытый гем, чем-то похожий на https://rustlings.rust-lang.org (интерактивное решение ошибок компилятора по темам из раст бука, проходится локально). Только тут в браузере, но компилятор и редактор кода есть из playground https://play.rust-lang.org Tour of Rust - Let's go on an adventure! Welcome to the Tour of Rust. This is meant to be a step by step guide through the features of the Rust programming language tourofrust.com будет особенно полезно для тех кто ещё только собирается вкатываться, т.к. думаю это идеальный способ выучить язык, потому что видишь куски кода и объяснения, можешь сразу изменить код и скомпилировать/выполнить чтобы понять концепции языка. это гораздо лучше чем медленные и пассивные видео курсы, которые совсем не вовлекают и тратят кучу времени, но в то же время интересней и лучше запомнится чем если просто прочитать раст бук. Занятия Привет, Глава 1 - Основы The Rust Playground Переменные (Variables) Изменение переменных Базовые типы (Basic Types) Преобразование базовых типов (Type Conversion) Константы (Constants) Массивы (Arrays) Функции (Functions) Возврат нескольких значений (Tuple) Возврат пустого значения (Nothing) Раздел 1 - Заключение Глава 2 - Управление потоком исполнения if/else if/else loop while for match Возвращение значений из loop Возвращение значений из выражений блоков Глава 2. Заключение Глава 3 - Базовые структуры данных Структуры (Structures) Вызов методов Память (Memory) Создание структур в памяти Кортежи-структуры (Tuple-like Structs) Юнит-структуры (Unit-like Structs) Перечисления (Enumerations) Перечисления с данными Глава 3 - Заключение Глава 4 - Обобщённые типы Что такое обобщённые типы (Generic Types)? Представление отсутствия значения (Representing Nothing) Тип Option Тип Result Возврат результата в Main Элегантная обработка ошибок Грязная обработка Option/Result Векторы Глава 4 - Заключение Глава 5 - Владение и Заимствование данными (Ownership & Borrowing) Владение (Ownership) Управление ресурсами на основе области видимости Иерархическое удаление (Dropping is Hierarchical) Передача владения (Moving Ownership) Возвращение владения (Returning Ownership) Заимствование во владение с помощью ссылок Заимствование во владение с правами на изменение (Mutable Borrow) Разыменование (Dereferencing) Передача заимствованных данных Ссылки на ссылки (References Of References) Явное указание времени жизни (Explicit Lifetimes) Несколько времён жизни (Multiple Lifetimes) Статические времена жизни (Static Lifetimes) Времена жизни у типов данных (Lifetimes In Data Types) Глава 5 - Заключение Глава 6 - Текст Тип строковые литералы (String Literals) Что такое utf-8 Экранирующие символы (Escaping Characters) Многострочные строковые литералы (Multi-line) Сырые (необработанные) строковые литералы (Raw String Literals) Строковые литераты из файлов Строковые срезы (String Slice) Символы (Chars) Строковый тип (String) Текст как параметр функции (Function Parameter) Создание строк Форматирование строк (Formatting) Преобразование строк (Converting Strings) Глава 6 - Заключение Глава 7 - Объектно-ориентированное программирование (OOP) Что такое ООП (OOP)? Rust не является ООП (OOP) языком Инкапсуляция с помощью методов Абстракция с выборочной экспозицией (Abstraction With Selective Exposure) Полиморфизм с помощью типажей (Traits) Реализация методов в самих типажах Наследование типажа (Trait Inheritance) Динамическая vs Статическая диспетчеризация (Dynamic vs Static Dispatch) Типаж объекты (Trait Objects) Обработка не размерных данных (Unsized Data) Обобщенные функции (Generic Functions) Сокращение в обобщенной функции (Generic Function Shorthand) Тип умного указателя Box Обощенные структуры снова (Generic Structs Revisited) Глава 7 - Заключение Chapter 8 - Smart Pointers Ссылки снова (References Revisited) Сырые указатели (Raw Pointers) Разыменование (Dereferencing) Оператор * (звездочка) Оператор . (точка) Умные указатели (Smart Pointers) Умный небезопасный код (Smart Unsafe Code) Знакомые друзья (Familiar Friends) Память, выделяемая в куче (Heap Allocated Memory) Сигнатура ошибки в функции main(). Cнова (Failable Main Revisited) Подсчет ссылок (Referencing Counting) Разделяемый доступ (Sharing Access) Разделение данных между потоками (Sharing Across Threads) Комбинирование умных указателей (Combining Smart Pointers) Глава 8 - Заключение Глава 9 - Организация и структура проекта (Project Organization and Structure) Модули (Modules) Написание программы (Writing a Program) Написание библиотеки (Writing a Library) Подключение других модулей и крейтов (Referencing Other Modules and Crates) Подключение нескольких элементов (Referencing Multiple Items) Создание модулей (Creating Modules) Иерархия модуля (Module Hierarchy) Встроенный модуль (Inline Module) Ссылка на встроенный модуль (Internal Module Referencing) Экспорт (Exporting) Область видимости структур (Structure Visibility) Автоимпорт (Prelude) Ваш собственный автоимпорт (Your Own Prelude) Глава 9 - Заключение Глава 10 - Конец