0 2.6K ru

Roadmap для Rust разработчиков

📖 Общие навыки и знания для разработчика

 Общие навыки и знания для разработчика

📊 Database fundamentals

Database fundamentals

Для понимания в чем разница между разными типами БД рекомендуем заюзать по 1 SQL, NoSQL, Graph, и тп. базе данных. 

Relational databases

Non-relational databases

Document databases

🦀 Основы языка Rust

Основы языка Rust

📘 Основы синтаксиса Rust

Rust имеет уникальный синтаксис, который может быть непривычен для людей, привыкших к языкам вроде JavaScript или Python. Сначала следует ознакомиться с основами синтаксиса Rust.

💾 Управление памятью в Rust

Rust использует систему управления памятью без сборщика мусора. Это обеспечивает высокую производительность и предотвращает многие виды ошибок, связанные с памятью.

🔢 Типы данных в Rust

Rust имеет строгую систему типов, которая помогает предотвратить ошибки и обеспечивает ясность кода.

⚠️ Error handling в Rust

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

📦 Модули в Rust

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

Детальнее про модули можно посмотреть в документации Rust. 

🗃️ Коллекции в Rust

Rust предлагает несколько типов коллекций для хранения данных в памяти. Это включает:

  • Векторы (Vec<T>): Это динамический массив, который может изменяться в размерах.
  • Строки (String и &str): Это коллекции символов Unicode.
  • Хеш-карты (HashMap<K, V>): Это коллекции, которые связывают значения (V) с уникальными ключами (K).
  • Списки и очереди: Rust также поддерживает другие структуры данных, такие как связанные списки и очереди, но они обычно не используются напрямую, а предоставляются через внешние библиотеки.

Детальнее про коллекции можно посмотреть в документации Rust. 

🚧 Scope в Rust

Scope – относится к области кода, в которой переменная или функция являются доступными. В Rust область видимости обычно определяется блоками кода, заключенными в фигурные скобки {}. Когда переменная выходит за пределы своей области видимости, она автоматически очищается.

Детальнее про scope можно посмотреть в документации Rust. 

➕➖✖️➗ Numeric Operations в Rust

Rust поддерживает все основные числовые операции, включая сложение, вычитание, умножение, деление и остаток от деления. Rust также поддерживает битовые операции, такие как AND, OR и XOR. Кроме того, Rust поддерживает операции сравнения, такие как равенство, неравенство, больше, меньше, больше или равно и меньше или равно.

Детальнее про операции смотрите в документации Rust. 

🔄 Control Flow в Rust

Rust поддерживает обычные конструкции управления потоком, включая:

  • if/else: условный оператор.
  • loop: цикл, который повторяется до тех пор, пока не будет выполнено условие выхода.
  • while: цикл, который повторяется, пока условие истинно.
  • for: цикл, который повторяется для каждого элемента в коллекции.

📝 Переменные (Variable Bindings) в Rust

В Rust переменные объявляются с помощью ключевого слова let. К примеру:

let x = 5;

Здесь мы создали переменную x и присвоили ей значение 5. По умолчанию все переменные в Rust являются immutable. Это означает, что если вы попытаетесь изменить значение x, вы получите ошибку компиляции:

let x = 5;
x = 6; // Ошибка: immutable переменная

Если вам нужна mutable переменная, вы можете объявить ее с помощью let mut:

let mut x = 5;
x = 6; // ОК

Однако стоит использовать mutable переменные осторожно, так как они могут привести к ошибкам в программе. Rust поощряет использование immutable там, где это возможно.

Также Rust поддерживает деструктуризацию через сопоставление с образцом в объявлениях переменных:

let (x, y) = (1, 2); 
// `x` и `y` могут быть использованы как отдельные переменные

Это особенно полезно при работе с кортежами и структурами данных.

🔧 Основы разработки на Rust

Основы разработки на Rust

📦 Использование Cargo, менеджера пакетов Rust

Cargo - это инструмент, который помогает вам создавать проекты Rust, управлять зависимостями и собирать код.

🖥️ Разработка простых приложений и библиотек

Сначала стоит попробовать написать простое приложение или библиотеку на Rust, чтобы понять, как работает язык в целом.

💻 Debugging

✅ Тестирование в Rust

Rust имеет встроенные средства для написания и запуска тестов. 

Для изучения деталей можно прочитать следующий материал How to Write Tests и полезные библиотеки при работе с тестами в Rust: 

Code Coverage – tarpaulin

Continuous Integration – trust

Фреймворки

  • AlKass/polish – Testing/Test-Driven Framework
  • cargo-dinghy – Расширение cargo для упрощения запуска library тестов и benches на смартфонах и других устройствах с маленьким процессором
  • cucumber – Реализация фреймворка тестирования Cucumber для Rust. Полностью нативная, без внешних зависимостей.
  • demonstrate – Declarative Testing Framework
  • speculate — An RSpec inspired minimal testing framework for Rust

Моки и тест данные

  • asomers/mockall [mockall] —  Библиотека mock-объектов для Rust.
  • fake-rs — библиотека для генерации фейковых данных
  • httpmock — HTTP mocking
  • synth — Generate database data declaratively

🌐 Веб разработка

Rust предлагает множество инструментов и библиотек для веб-разработки:

  • Rocket наиболее популярный фреймворк, который облегчает создание веб-приложений с помощью предоставления множества полезных функций, включая маршрутизацию, валидацию и обработку запросов.
  • yew —  фреймворк для создания многофункциональных клиентских приложений в стиле React или Elm.
  • actix/actix-web — легковесный async web framework в Rust с поддержкой websocket

🎮 Разработка игр

Rust также активно используется в игровой индустрии. Его низкоуровневые возможности, скорость и безопасность делают его подходящим для создания быстрых и эффективных игровых движков. Кроме того, Rust предлагает несколько библиотек и фреймворков для разработки игр:

  • SiegeLord/RustAllegro
  • Awesome Quads — Список ссылок на код и ресурсы, связанные с miniquad/macroquad
  • Awesome wgpu — Составленный список кода и ресурсов wgpu
  • bracket-lib [bracket-lib] - Roguelike Toolkit (RLTK)
  • Entity-Component Systems (ECS)
    • amethyst/specs — Specs Parallel Entity-Component Systems
    • legion — A feature-rich high-performance ECS library with minimal boilerplate
  • Fyrox — Rust Game engine 3D

🔌 Embedded

Rust предлагает великолепные возможности для работы с встраиваемыми системами. Это возможно благодаря "нулевой стандартной библиотеке" ("no_std"), которая исключает те части стандартной библиотеки Rust, где требуется поддержка операционной системы. Это делает его особенно полезным для разработки программного обеспечения для микроконтроллеров и другого аппаратного обеспечения, где доступные ресурсы ограничены.

Также стоит отметить, что Rust имеет отличные механизмы безопасности, которые могут помочь избежать классических ошибок при работе с Embedded, таких как доступ к некорректным адресам памяти или ошибки работы с многопоточностью.

Полезные ресурсы и библиотеки:

🎮 Эмуляторы

Rust эмуляторы

💰 Работа с Криптой в Rust

Криптовалюты в Rust

Полезные библиотеки, которые могут пригодиться при работе с криптовалютой с помощью Rust:

  • beerus - Beerus это клиент StarkNet Light
  • Bitcoin Satoshi's Vision [sv] — Библиотека Rust для работы с Bitcoin SV.
  • cairo - Cairo - это первый Turing-complete язык для создания программ для общих вычислений.
  • cairo-rs — Rust реализация Cairo VM
  • ChainX — Полностью децентрализованное Interchain Crypto Asset Management на Polkadot
  • CITA — Высокопроизводительное ядро блокчейна для корпоративных пользователей.
  • coinbase-pro-rs — Клиент Coinbase на Rust, поддерживает sync/async/websocket
  • electrumrs — Реализация Electrum Server в Rust.
  • ethabi - Енкодинг и декодинг смарт-контрактов.
  • ethaddrgen — Ethereum vanity address generator
  • Holochain — P2P альтернатива до blockchain.
  • Lighthouse — Rust Ethereum Consensus Layer (CL) Client
  • near/nearcore — децентрализованная платформа смарт-контрактов для 'low-end' мобильных устройств
  • revm - Revolutionary Machine (revm) - это быстрая виртуальная машина Ethereum, написанная на языке rust.
  • rust-bitcoin — Библиотека с поддержкой де/сериализации, парсинга и выполнения на структурах данных и сетевых сообщениях, связанных с Bitcoin.
  • svm-rs - Solidity-Compiler Version Manager.
  • wagyu [wagyu] — Библиотека Rust для создания криптовалютных кошельков

📚 Книги и дополнительные материалы для изучения Rust

Книги и дополнительные материалы для изучения Rust
  1. Книги "The Rust Programming Language" и "Rust by Example" - отличные стартовые точки для изучения Rust.
  2. Документация по библиотеке Rust помогут вам понять основы языка.
  3. Beginning Rust Programming (2021)
  4. awesome-rust - большой набор полезных ссылок библиотек для Rust

Comments:

Please log in to be able add comments.