TG Telegram Group Link
Channel: Rust
Back to Bottom
Dioxus

Это современный фреймворк для разработки UI на Rust, похожий на React, но с преимуществами производительности и безопасностью Rust. Он поддерживает рендеринг на Web, Desktop, Mobile и даже TUI.

https://github.com/DioxusLabs

👉 @rust_lib
👍9😱32🥰1
5 алгоритмов на Rust, которые должен знать каждый разработчик

Кто-то приходит в Rust ради безопасной работы с памятью, кто-то — ради скорости, а кто-то просто потому, что «все нормальные языки уже попробовал». Но что бы ни привело вас в этот уголок низкоуровневой мощи, без хорошего знания алгоритмов далеко не уедешь.

Писать код на Rust — это не просто бороться с borrow checker, но и делать его действительно эффективным. Ведь никакой язык не спасет от тормозов, если алгоритмы выбраны неудачно.

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

https://habr.com/ru/companies/beget/articles/887160/

👉 @rust_lib
👍13💩5👎43🥰1
Полный курс Rust от Google 🦀

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

Курс охватывает:

- Основы языка Rust
- Работа с памятью и безопасностью
- Современные концепции (итераторы, async, crate-экосистема и т.д.)
- Использование Rust для Android и WebAssembly
- Конкретные упражнения и практические примеры

Можно использовать как в виде самостоятельного материала, так и для проведения обучающих семинаров.
Подходит для разработчиков, знакомых с системным программированием, например, на C/C++.

https://github.com/google/comprehensive-rust

👉 @rust_lib
👍19🔥73🥰1
📖 Неофициальное руководство по экосистеме Rust

https://blessed.rs/crates

https://github.com/nicoburns/blessed-rs

👉 @rust_lib
👍143🔥2🥰1
Список ресурсов для изучения Rust — Дорожная карта от новичка до продвинутого уровня.

https://github.com/ImplFerris/LearnRust

👉 @rust_lib
👍134🥰1🎉1
🧵 Почему .clone() в Rust — не всегда зло (и когда он действительно вреден)

Многие начинающие разработчики в Rust быстро усваивают: «.clone() — это плохо». И правда, если бросаться клонировать всё подряд, можно получить красивый, но тормозной код. Но важно понимать, почему .clone() вызывает проблемы, и когда его использование оправдано.


📌 Что делает .clone()?

Метод .clone() копирует данные, создавая новое значение в памяти. Это не просто копия указателя — это глубокое копирование. То есть:


let a = String::from("hello");
let b = a.clone(); // теперь у нас два разных `String`


Для простых типов (например, i32, bool, char) .clone() вообще не нужен — они Copy и дублируются автоматически.


🚩 Когда .clone() — сигнал тревоги

Если вы часто пишете .clone(), чтобы «заткнуть компилятор», скорее всего, у вас проблемы с пониманием владения и заимствования. Пример:


fn takes_ownership(s: String) { /* ... */ }

let s = String::from("data");
takes_ownership(s.clone()); // работает, но...
takes_ownership(s); // не работает без `.clone()`


Здесь правильнее задуматься: а нужно ли вообще передавать владение? Или лучше использовать ссылку:


fn takes_reference(s: &str) { /* ... */ }

let s = String::from("data");
takes_reference(&s);



Когда .clone() — нормально

- Вы действительно хотите получить копию, и это оправдано логикой программы.
- Тип дешёв в копировании (Arc, Rc, PathBuf — в разумных пределах).
- Профилировали — и увидели, что это не узкое место.
- Вы работаете с immutability в многопоточном контексте — там клоны часто оправданы.


🧠 Вывод

.clone() — это инструмент. Он не «зло», а просто сигнал: здесь стоит подумать. Если вы клонируете ради того, чтобы компилятор «не ругался», скорее всего, вы пропускаете шанс написать более идиоматичный и эффективный Rust-код.

👉 @rust_lib
👍1541🥰1
⚙️Уже работаете с Rust, но хотите эффективно интегрировать его с другими языками? Или интересуетесь, как устроен процесс сборки и линковки в этом языке?

🗓На открытом вебинаре 24 апреля в 20:00 мск мы подробно разберем, как собирать и линковать библиотеки в Rust, как использовать Rust-библиотеки в других языках, а также реализуем Си ABI (Application Binary Interface). Вы получите знания, которые помогут вам повысить производительность ваших проектов и интегрировать Rust в существующие решения.

👨‍💻Урок будет полезен всем, кто хочет углубить свои знания в Rust, повысить квалификацию и навыки работы с библиотеками и системами. Вы сможете применять полученные знания в реальных проектах.

👉Присоединяйтесь к открытому вебинару и получите скидку на большое обучение «Rust Developer. Professional»: https://vk.cc/cKVaG7

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1🥰1
🦀 Zero-cost abstractions — миф или магия?

Одна из главных фишек Rust — zero-cost abstractions. Звучит круто, но что это на деле?

📦 Когда ты пишешь абстрактный код (дженерики, итераторы, трейты), ты обычно платишь ценой производительности. Но не в Rust.

🧠 Rust-компилятор (LLVM) на этапе компиляции мононизирует (специализирует) код — превращает обобщённые конструкции в конкретные, а ненужные — выкидывает. В итоге твои абстракции не тормозят, а код остаётся читаемым.

Пример:

fn square<T: Copy + std::ops::Mul<Output = T>>(x: T) -> T {
x * x
}


Такой код при компиляции становится обычной функцией для i32, f64, и так далее — без оверхеда.

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

🧩 А ты используешь zero-cost подходы в своём коде? Делись примерами в комментариях!

👉 @rust_lib
👍17🥰32🔥1😁1💩1
Blue Recorder - простой экранный рекордер, написанный на Rust на основе Green Recorder

Простое приложение для записи экрана на Linux. Построено с использованием GTK4 и ffmpeg.

Поддерживает запись аудио и видео практически на всех интерфейсах Linux с поддержкой сервера отображения Wayland в сессиях GNOME.

В данный момент поддерживаются следующие форматы: mkv, avi, mp4, wmv, gif и nut.
Вы можете легко остановить запись, щёлкнув правой кнопкой мыши по иконке в области уведомлений и выбрав "Остановить запись". Также можно кликнуть средней кнопкой мыши по иконке записи (но эта функция работает не на всех интерфейсах).
Можно выбрать источник аудиовхода из списка доступных устройств.

Также вы можете задать значения по умолчанию, просто изменив их в интерфейсе — программа сохранит их для следующего запуска.
Основано на Green Recorder, переписано на Rust с улучшениями.

https://github.com/xlmnxp/blue-recorder

👉 @rust_lib
👍164🔥4🥰1
💻 100 упражнений для изучения Rust

Репозиторий 100-exercises-to-learn-rust предлагает подборку из 100 задач для практики Rust. Упражнения покрывают широкий спектр тем: от базового синтаксиса и работы с переменными до более сложных тем вроде многопоточности и асинхронного программирования.

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

https://github.com/mainmatter/100-exercises-to-learn-rust

👉 @rust_lib
🔥15👍54🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Rustubble

Этот проект нацелен на предоставление набора компонентов, которые можно использовать в терминальных приложениях.

Компонент TextInput — это универсальное и настраиваемое текстовое поле ввода, предназначенное для терминальных приложений на языке Rust. Он поддерживает Unicode, динамическую обработку ввода и предлагает множество опций настройки для улучшения взаимодействия с пользователем.

Особенности:

* Поддержка Unicode: Без проблем обрабатывает ввод символов Unicode.
* Динамическая обработка ввода: Поддерживает ввод в реальном времени, включая вставку и удаление текста.
* Гибкая настройка: Возможность задавать отступы, плейсхолдер, начальный текст и вспомогательный текст.
* Управление курсором: Контролирует положение курсора и гарантирует его корректное размещение в зависимости от действий пользователя.

https://github.com/warpy-ai/rustubble

👉 @rust_lib
👍113🥰1
Выпуск Rust 1.87

В день празднования десятилетия с момента выпуска языка программирования Rust 1.0 (проект Rust был основан в 2006 году, выпуск 0.1 был сформирован в 2012 году, а первая стабильная версия предложена в 2015 году) опубликован релиз Rust 1.87. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.

Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.

https://www.opennet.ru/opennews/art.shtml?num=63242

👉 @rust_lib
👍133🥰2
Komorebi

Менеджер окон с тайлингом для Windows 🍉

Обзор
komorebi — это менеджер окон с тайлингом, работающий как расширение для Desktop Window Manager в Windows 10 и выше.

komorebi позволяет управлять оконными приложениями, виртуальными рабочими областями и мониторами через CLI. Его можно использовать вместе со сторонним софтом, таким как whkd и AutoHotKey, для настройки пользовательских сочетаний клавиш.

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

https://github.com/LGUG2Z/komorebi

👉 @rust_lib
👍72🔥1🥰1
🤖 Тест по Rust проверь свои знания, готов ли ты к обучению на курсе.

Ответишь — пройдешь на курс "Rust Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса

За 5 месяцев обучения ты разберёшь ключевые особенности Rust и сможешь не только разрабатывать сложные программные продукты, но и в целом лучше проектировать ПО.

➡️ ПРОЙТИ ТЕСТ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Yazi — ⚡️ Молниеносно быстрый файловый менеджер для терминала

Это файловый менеджер для терминала, написанный на Rust, основанный на неблокирующем асинхронном вводе/выводе. Он ориентирован на предоставление эффективного, удобного и настраиваемого опыта управления файлами.

• Встроенная поддержка нескольких протоколов изображений
• Полная асинхронная поддержка: все операции ввода-вывода являются асинхронными, задачи ЦП распределяются по нескольким потокам, что позволяет максимально эффективно использовать доступные ресурсы.
• Встроенная подсветка кода
• Интеграция с fd, rg, fzf, zoxy
• Vim-подобное управление
• Поддержка нескольких вкладок, предварительный просмотр с возможностью прокрутки (для видео, PDF-файлов, архивов, каталогов, кода и т. д.)
• Система тем, пользовательские макеты, корзина для мусора
и многое другое...

Совместим с GNU/Linux, Windows, macOS

https://github.com/sxyazi/yazi

👉 @rust_lib
👍303🔥1🥰1
Helix gpui

Это простая графическая оболочка для редактора Helix. Большинство модальных редакторов работают в терминале; я хочу изменить это и реализовать качественный модальный GUI-редактор.

Темы
gui, rust-lang, helix-editor

https://github.com/polachok/helix-gpui

👉 @rust_lib
👍82🤡2🥰1💊1
Один на один с Rust

Всем привет! Я Влад Лунин, занимаюсь анализом сложных угроз в экспертном центре безопасности Positive Technologies. В последнее время часто приходится сталкиваться с вредоносным ПО (ВПО), написанном на Rust, поэтому хочу поделиться своим опытом реверса исполняемых файлов, написанном на этом языке. ВПО бывает как очень простое, так и очень сложное в своей реализации, и чаще всего эта сложность обусловлена особенностями Rust. Расскажу, какие подходы применяю для успешного реверса, а также про сложности, с которыми сталкивался, и как их преодолевал.

https://habr.com/ru/companies/pt/articles/915192/

👉 @rust_lib
👍16
🔧 Библиотека Rustworkx - это высокопроизводительное средство для работы с графами на Python, написанное на Rust.

Она была разработана как альтернатива NetworkX, но с упором на производительность: реализация на Rust даёт значительный прирост скорости при сохранении удобного Python-интерфейса через PyO3. Поддерживаются как направленные, так и ненаправленные графы, деревья, DAG-и, и всё это — с кастомными атрибутами узлов и рёбер.

rustworkx предоставляет большое количество алгоритмов: обходы в глубину/ширину, кратчайшие пути (Dijkstra, A*), топологическую сортировку, поиск мостов, минимальные остовные деревья, изоморфизм графов, и многое другое.

Особенно полезна для задач, где критична производительность графовых операций: квантовые вычисления, биоинформатика, планировщики, оптимизация.

Установка:


pip install rustworkx


https://github.com/Qiskit/rustworkx

👉 @rust_lib
👍93👎1🥰1🤔1
toydb — это распределённая SQL-база данных, реализованная на Rust с нуля, включая журнал предзаписи (write-ahead log), хранилище на основе B-деревьев, транзакции с сериализуемой изоляцией, согласование с помощью Raft и SQL-парсер/исполнитель.

Особенности:

* Полная реализация Raft с поддержкой снапшотов
* SQL-парсер и исполнитель, поддерживающий выборку, фильтрацию, агрегацию, соединения, подзапросы и т.д.
* Хранилище ключ-значение на основе B-деревьев с журналом предзаписи
* Механизм MVCC с сериализуемой изоляцией и детекцией конфликтов
* Планировщик транзакций с дедлок-детекцией
* Управление схемой SQL (таблицы, индексы, и т.д.)

Цель проекта — изучение реализации распределённых баз данных с нуля. Он не предназначен для использования в продакшене.

https://github.com/erikgrinaker/toydb

👉 @rust_lib
👍144🔥1🥰1
«Zero To Production In Rust»

Это субъективное введение в разработку backend-приложений на Rust.

Этот репозиторий служит вспомогательным материалом к книге: он содержит несколько снимков (состояний) кодовой базы проекта рассылки по электронной почте, отражающих её развитие по мере продвижения по книге.

https://github.com/LukeMathWalker/zero-to-production

👉 @rust_lib
👍122🥰1
HTML Embed Code:
2025/07/14 11:30:25
Back to Top