Rust
1.27K subscribers
74 photos
43 videos
11 files
105 links
Полезный контент по программированию на Rust
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Ratatui

Библиотека Rust, предназначенная для создания терминальных пользовательских интерфейсов (TUI).

https://github.com/tui-rs-revival/ratatui

👉 @rust_lib
Самая маленькая хеш-таблица в мире

1 декабря я в очередной раз поучаствовал в Advent of Code, написав программу на Rust. Если интересно — код можно найти на GitHub. Тут мне хотелось бы рассказать о моём решении задачи, предлагавшейся во 2 день мероприятия, так как это решение, с одной стороны, сверх всякой меры оптимизировано, а с другой — демонстрирует кое-какие полезные приёмы. Чтобы не усложнять себе жизнь — мы рассмотрим лишь первую часть задачи, но те же приёмы можно применить и к её второй части.

Мы начнём входить в курс дела не спеша, но я предлагаю вам не отклоняться от заданного мной курса, так как, после того, как вы полностью прочтёте этот материал, у вас должно появиться понимание того, что именно делает следующая функция, как она работает, как такую функцию написать, и того, почему это — самая маленькая в мире хеш-таблица:

pub fn phf_shift(x: u32) -> u8 {
let shift = x.wrapping_mul(0xa463293e) >> 27;
((0x824a1847u32 >> shift) & 0b11111) as u8
}


Rus https://habr.com/ru/companies/wunderfund/articles/723536/

Eng https://orlp.net/blog/worlds-smallest-hash-table/


👉 @rust_lib
Media is too big
VIEW IN TELEGRAM
Игровой движок написанный на Rust

Ambient - это кроссплатформенная среда исполнения с открытым исходным кодом и платформа для создания, развертывания и совместного использования высокопроизводительных многопользовательских игр в Интернете, на рабочем столе и в других местах. Основанная на Rust, WebAssembly (WASM) и WebGPU, Ambient является передовой, оставаясь при этом верной своей цели: сделать разработку игр увлекательной и доступной.

https://github.com/AmbientRun/Ambient

👉 @rust_lib
Wtftw

Window Tiling For The Win. Менеджер черепичных окон, написанный на Rust

https://github.com/Kintaro/wtftw

👉 @rust_lib
Запуск Rocket REST API на AWS

Rocket.rs  —  самый известный фреймворк на Rust для легкого создания производительных и типобезопасных веб-приложений. Развернем с его помощью собственный Rocket REST API на AWS.

Что понадобится
языка программирования Rust;
команд оболочки в Linux;
AWS Elastic Compute Cloud (EC2) и сетей;
учетная запись AWS.

Что будем разворачивать?
Очень простой Rocket REST API с двумя маршрутами: / и /sort. Первый маршрут  —  это индекс. После GET-запроса он отправит текст Hello from Rocket REST API!. Второй  —  POST-маршрут. По нему в приложении в ответ на заданный несортированный целочисленный массив и порядок сортировки вернется корректно отсортированный массив.

https://betterprogramming.pub/launching-a-rocket-rest-api-on-aws-d8c17f0c9850

👉 @rust_lib
Использование scoped threads Rust для повышения эффективности и безопасности

В прошлом крейт crossbeam предоставлял возможность создавать скопированные потоки. Но теперь его функция scoped thread была мягко устаревшей в пользу встроенной в Rust функции scoped thread.

В этой статье вы узнаете, что такое scoped threads, как они функционируют, как их создавать и чем они отличаются от unscoped threads.

https://blog.logrocket.com/using-rust-scoped-threads-improve-efficiency-safety/

👉 @rust_lib
Rust: выполнение HTTP-запросов и обработка ответов с помощью reqwest

В Rust HTTP-запросы и парсинг результата выполнять легко — нужны лишь подходящие библиотеки. reqwest и serde могут стать идеальным решением.

https://telegra.ph/Rust-vypolnenie-HTTP-zaprosov-i-obrabotka-otvetov-s-pomoshchyu-reqwest-02-05

Original https://levelup.gitconnected.com/rust-making-http-requests-and-handling-responses-by-using-reqwest-c8d557cdce46

👉 @rust_lib
От Rust к Assembly: Понимание внутренней работы Rust

https://eventhelix.com/rust/

👉 @rust_lib
Создание микросервисов на Rust с помощью Spin

Rust предлагает мощный и эффективный подход к разработке приложений. А с помощью Spin создавать мощные микросервисы для распределенных приложений стало намного проще. Преимущества производительности Rust в сочетании с простотой использования и масштабируемостью Spin делают их ценным выбором для разработчиков, стремящихся создавать надежные и масштабируемые системы.

В этой статье мы расскажем вам о фреймворке Spin и проведем вас через создание простого микросервиса.

https://blog.logrocket.com/build-microservices-rust-spin/

👉 @rust_lib
Фича-флаги времени компиляции в Rust: зачем, как и когда используются

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

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

https://betterprogramming.pub/compile-time-feature-flags-in-rust-why-how-when-129aada7d1b3

👉 @rust_lib
Пишем на Python как на Rust

Я начал программировать на Rust несколько лет назад, и это постепенно изменило мой подход к разработке программ на других языках программирования, особенно на Python. До того, как я начал использовать Rust, я обычно писал код на Python очень динамично, без подсказок типов, повсюду передавая и возвращая словари и время от времени возвращаясь к интерфейсам со «строковой типизацией». Однако, испытав на себе строгость системы типов Rust и заметив все проблемы, которые она предотвращает, я внезапно стал сильно беспокоиться всякий раз, когда возвращался к Python и не получал тех же гарантий.

https://habr.com/ru/articles/736842/

original https://kobzol.github.io/rust/python/2023/05/20/writing-python-like-its-rust.html

👉 @rust_lib
This media is not supported in your browser
VIEW IN TELEGRAM
Wagyu

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

https://github.com/AleoHQ/wagyu

👉 @rust_lib
Rust: параметризуем мутабельность через маркеры и ассоциированные типы

Borrow-checker — отличный секюрити, который очень эффективен, если мы находимся в безопасном Rust. Его поведение отлично описано в RustBook, и, по крайней мере, я почти никогда не сталкиваюсь с придирками, которым я бы не был благодарен.


Но вот когда нужно написать семантически-безопасный API над функциями и данными, которые вообще не безопасны — у меня всё стало валиться из рук. Последние пару дней я потратил на то, чтобы придумать элегантный способ параметризации мутабельности. Над тем, чтобы на уровне API сохранялась семантика — зависимость изменяемости полей друг от друга. Даже если на самом деле они живут сами по себе.

https://habr.com/ru/articles/703018/

👉 @rust_lib
Я написал одну из самых быстрых библиотек датафреймов

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

Год спустя, написав немало кода, я создал одну из самых быстрых библиотек датафреймов, применимую в Rust и Python. Вот мой первый официальный «Hello World» на polars, размещённый у меня в блоге. Надеюсь, что с помощью этого поста я смогу пояснить читателю некоторые решения, которые мне довелось принять при проектировании, и вам станет понятнее, как Polars работает под капотом.

https://habr.com/ru/companies/timeweb/articles/737808/

👉 @rust_lib
Это слишком опасно для C++

Некоторые паттерны стало возможно использовать на практике только благодаря безопасности Rust по памяти, а на C++ они слишком опасны. В статье приведён один такой пример.

Работая над внутренней библиотекой, написанной на Rust, я создал тип ошибок для парсера, у которых должна быть возможность сделать Clone без дублирования внутренних данных. В Rust для этого требуется указатель с подсчётом ссылок (reference-counted pointer) наподобие Rc.

Поэтому я написал свой тип ошибок, использовал его как вариант ошибок fallible-функций, и продолжил двигаться дальше.

https://habr.com/ru/articles/793868/

👉 @rust_lib
Как IndVarSimplification применяет математику в вашем коде

Хочу поделиться своей историей расследования одной довольно необычной компиляторной оптимизации. Необычна она в том плане, что для нее производятся довольно нетривиальные математические вычисления. Приступим!

https://habr.com/ru/articles/738272/

👉 @rust_lib
Глубокая нейронная сеть с нуля на Rust 🦀

Часть 1. Основы нейронных сетей
https://www.akshaymakes.com/blogs/rust_dnn_part1

Часть 2. Загрузка данных и инициализация модели NN
https://www.akshaymakes.com/blogs/rust_dnn_part2

Часть 3. Прямое распространение
https://www.akshaymakes.com/blogs/rust_dnn_part3

Часть 4. Функция потерь и обратное распространение
https://www.akshaymakes.com/blogs/rust_dnn_part4

Часть 5. Обучение и выводы
https://www.akshaymakes.com/blogs/rust_dnn_part_5

👉 @rust_lib
Joshuto

ranger-подобный терминальный файловый менеджер, написанный на Rust

https://github.com/kamiyaa/joshuto

👉 @rust_lib
Пишем калькулятор на Rust с GUI

Зачем еще один калькулятор? Да не зачем, просто как тестовый проект для рассмотрения GUI-библиотеки.

Изначально я хотел попробовать такие крейты, как GPUI, Floem и Xilem, но первая, кажется, пока работает только под MacOS и Linux, вторая не позволяет установить иконку окну и кушает оперативы побольше Webview в Tauri, а до третьей я так и не добрался, узнав об Slint.

Об Slint есть всего несколько новостных постов на Хабре, поэтому, возможно, вам будет интересно посмотреть, что это такое.

https://habr.com/ru/articles/804655/

👉 @rust_lib