Rust
2.03K subscribers
121 photos
85 videos
2 files
162 links
Полезный контент по программированию на Rust
Download Telegram
Wtftw

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

https://github.com/Kintaro/wtftw

👉 @rust_lib
👍7
Запуск 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
👍21
Использование 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
👍3
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
👍6
От Rust к Assembly: Понимание внутренней работы Rust

https://eventhelix.com/rust/

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

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

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

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

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

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

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

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

👉 @rust_lib
👍21
Пишем на 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
👎10👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Wagyu

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

https://github.com/AleoHQ/wagyu

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

👉 @rust_lib
👍7
Глубокая нейронная сеть с нуля на 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
🔥13👍72
Joshuto

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

https://github.com/kamiyaa/joshuto

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

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

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

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

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

👉 @rust_lib
👍11
This media is not supported in your browser
VIEW IN TELEGRAM
Как я снизил время инкрементных сборок Rust на 40%

Я форкнул и модифицировал компилятор Rust rustc. Одна фича — кэширование расширения процедурных макросов — привела к снижению времени инкрементных сборок на 11-40% в различных реальных крейтах. Благодаря этому ускорились dev-сборки и меньше стал тормозить rust-analyzer (IDE IntelliSense).

Если вы специалист в повышении производительности компилятора Rust, то можете сразу перейти к разделу «Кэширование расширения макросов: ускорение инкрементных сборок Rust на 40%».

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

👉 @rust_lib
👍7😁1
Сколько памяти нужно для запуска 1 миллиона конкурирующих задач?

В этой статье я углублённо сравню потребление памяти между асинхронными и многопоточными программами популярных языков вроде Rust, Go, Java, C#, Python, Node.js и Elixir.

Недавно я проводил сравнение производительности нескольких программ, предназначенных для обработки большого количества сетевых подключений. В итоге я увидел огромную разницу в потреблении этими программами памяти, порой в 20 раз и больше. Некоторые потребляли при 10К подключений чуть более 100 МБ в то время, как другие занимали почти 3 ГБ. К сожалению, эти программы были довольно сложными и также отличались своим функционалом, поэтому было бы трудно сравнить их непосредственно и сделать какие-то осмысленные выводы. Тут то у меня и возникла идея создать специальный синтетический бенчмарк.

Rus https://habr.com/ru/companies/ruvds/articles/739054/

Eng https://pkolaczk.github.io/memory-consumption-of-async/

👉 @rust_lib
🔥6👍5👎1
Почему я отказался от разработки игр на Rust, часть 1

Предисловие: этот пост представляет собой очень длинный перечень мыслей и проблем, возникавших у меня за годы работы; также в нём рассматриваются некоторые из аргументов, которые мне часто говорили. В посте выражено моё мнение, сформировавшееся у меня в процессе разработки игр на Rust в течение многих тысяч часов на протяжении многих лет и после множества завершённых игр. Это не хвастовство и не показатель успеха, я просто хочу сказать, что вложил достаточно много усилий в Rust; здесь не получится сказать «когда наберёшься опыта, тебе всё станет понятно».

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

👉 @rust_lib
👍8