Rust
Открыть в Telegram
2 222
Подписчики
+124 часа
-57 дней
-530 день
Архив постов
2 222
⚙️Уже работаете с Rust, но хотите эффективно интегрировать его с другими языками? Или интересуетесь, как устроен процесс сборки и линковки в этом языке?
🗓На открытом вебинаре 24 апреля в 20:00 мск мы подробно разберем, как собирать и линковать библиотеки в Rust, как использовать Rust-библиотеки в других языках, а также реализуем Си ABI (Application Binary Interface). Вы получите знания, которые помогут вам повысить производительность ваших проектов и интегрировать Rust в существующие решения.
👨💻Урок будет полезен всем, кто хочет углубить свои знания в Rust, повысить квалификацию и навыки работы с библиотеками и системами. Вы сможете применять полученные знания в реальных проектах.
👉Присоединяйтесь к открытому вебинару и получите скидку на большое обучение «Rust Developer. Professional»: https://vk.cc/cKVaG7
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
2 222
🧵 Почему
.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_lib2 222
Список ресурсов для изучения Rust — Дорожная карта от новичка до продвинутого уровня.
https://github.com/ImplFerris/LearnRust
👉 @rust_lib
2 222
📖 Неофициальное руководство по экосистеме Rust
https://blessed.rs/crates
https://github.com/nicoburns/blessed-rs
👉 @rust_lib
2 222
Полный курс Rust от Google 🦀
Это учебный курс по языку программирования Rust, разработанный командой Android в Google.
Он изначально предназначался для внутреннего использования для обучения разработчиков Android, но теперь открыт для всех.
Курс охватывает:
- Основы языка Rust
- Работа с памятью и безопасностью
- Современные концепции (итераторы, async, crate-экосистема и т.д.)
- Использование Rust для Android и WebAssembly
- Конкретные упражнения и практические примеры
Можно использовать как в виде самостоятельного материала, так и для проведения обучающих семинаров.
Подходит для разработчиков, знакомых с системным программированием, например, на C/C++.
https://github.com/google/comprehensive-rust
👉 @rust_lib
2 222
5 алгоритмов на Rust, которые должен знать каждый разработчик
Кто-то приходит в Rust ради безопасной работы с памятью, кто-то — ради скорости, а кто-то просто потому, что «все нормальные языки уже попробовал». Но что бы ни привело вас в этот уголок низкоуровневой мощи, без хорошего знания алгоритмов далеко не уедешь.
Писать код на Rust — это не просто бороться с borrow checker, но и делать его действительно эффективным. Ведь никакой язык не спасет от тормозов, если алгоритмы выбраны неудачно.
В этой статье мы разберем пять фундаментальных алгоритмов, которые важны для разработки на Rust. Они помогут лучше понимать работу с данными, оптимизировать производительность и писать код, который не стыдно показать.
https://habr.com/ru/companies/beget/articles/887160/
👉 @rust_lib
2 222
Dioxus
Это современный фреймворк для разработки UI на Rust, похожий на React, но с преимуществами производительности и безопасностью Rust. Он поддерживает рендеринг на Web, Desktop, Mobile и даже TUI.
https://github.com/DioxusLabs
👉 @rust_lib
2 222
Использование OpenTelemetry в Rust
В статье рассмотрено, как использовать OpenTelemetry в Rust для мониторинга и трассировки приложений. OpenTelemetry — это мощный инструмент для сбора и анализа данных о производительности, который помогает отслеживать выполнение запросов в распределенных системах.
В статье показано, как интегрировать OpenTelemetry в приложение на Rust, используя библиотеку tracing и экспортировать данные в Jaeger. Приведены примеры кода, объясняющие настройку и использование трейсов для диагностики проблем и улучшения производительности.
Базовый конвейер с OpenTelemetry можно настроить с помощью
opentelemetry_otlp. Затем создаётся слой tracing_opentelemetry, использующий этот конвейер, и добавляется в подписчик трассировки, который инициализируется.
// note that here, localhost:4318 is the default HTTP address
// for a local OpenTelemetry collector
let tracer = opentelemetry_otlp
::new_pipeline()
.tracing()
.with_exporter(opentelemetry_otlp::new_exporter().http().with_endpoint("localhost:4318"))
.install_batch(Tokio)
.unwrap();
// log level filtering here
let filter_layer = EnvFilter::try_from_default_env()
.or_else(|_| EnvFilter::try_new("info"))
.unwrap();
// fmt layer - printing out logs
let fmt_layer = fmt::layer().compact();
// turn our OTLP pipeline into a tracing layer
let otel_layer = tracing_opentelemetry::layer().with_tracer(tracer);
// initialise our subscriber
subscriber
.with(filter_layer)
.with(fmt_layer)
.with(otel_layer)
// The error layer needs to go after the otel_layer, because it needs access to the
// otel_data extension that is set on the span in the otel_layer.
.with(ErrorTracingLayer::new())
.init();
https://shuttle.rs/blog/2024/04/10/using-opentelemetry-rust
👉 @rust_lib2 222
Пишем простой драйвер на Rust
Популярность Rust неуклонно растёт, а с ней и сопутствующая экосистема. И оно не удивительно, ведь это единственный современный язык, который обеспечивает безопасность памяти и многопоточной обработки на этапе компиляции, предоставляя мощную и богатую систему сборки (cargo), а также всё больше различных пакетов (крейтов).
В своей повседневной работе я по-прежнему придерживаюсь C++, так как основная её часть связана с низкоуровневым программированием систем и ядра, а из этого языка легко задействовать написанный на С Windows API и COM API.
Rust — это язык для системного программирования, то есть он может справляться с теми же задачами, что и C/C++. Основное неудобство при этом создаёт громоздкий синтаксис, необходимый для преобразования типов С в типы Rust. Но это неудобство можно преодолеть, используя подобающие обёртки и макросы.
Короче говоря, я решил попробовать написать простой и полезный драйвер WDM. Это будет Rust-версия драйвера «Booster», о котором я пишу в своей книге (Windows Kernel Programming), позволяющего изменять приоритет любого потока на любое значение.
https://habr.com/ru/companies/ruvds/articles/882474/
👉 @rust_lib
2 222
MinDNS
Минимальный DNS-сервер, написанный на Rust, с системой правил и журналированием.
https://github.com/sammwyy/mindns
👉 @rust_lib
2 222
Учебное руководство по проекту на Rust – Сервер аутентификации с использованием Warp + JWT
В этом курсе вы узнаете, как использовать Rust для создания сервера аутентификации. Курс представляет собой подробное руководство по управлению пользовательскими данными, структуре и аутентификации на основе токенов. Особое внимание уделяется обработке ошибок, вопросам, связанным с JWT, и практическим решениям распространенных проблем. В завершение курса вас ждет практическая демонстрация, благодаря которой вы получите глубокое понимание процесса создания токенов и управления пользователями в современных приложениях.
0:00:00 Introduction and setup
0:06:42 Admin and user authentication
0:15:53 User data handling and roles
0:28:54 Introduction to user structures and attributes
0:45:41 Token management and claims analysis
1:01:48 Deep dive into roles and tokens
1:05:03 Error handling and permissions
1:14:58 Advanced error insights and JWT issues
1:29:19 Code analysis and issue resolution
1:31:24 Final touches and RS file exploration
1:34:50 Demo review and token creation
https://www.freecodecamp.org/news/rust-tutorial-authentication-server/
👉 @rust_lib
2 222
Rust: безопасный парсинг с нулевым копированием
В мире программирования производительность и безопасность данных — это два важных аспекта, которые часто находятся в конфликте. Однако Rust предлагает уникальные инструменты, позволяющие разрабатывать эффективные и безопасные парсеры, используя zero-copy технику. В этой статье автор делится своими находками и рассказывает, как Rust помогает избежать избыточных аллокаций памяти, сохраняя при этом строгую безопасность.
📌 Что такое zero-copy парсинг?
Zero-copy — это техника обработки данных без создания дополнительных копий в памяти. В Rust это достигается за счёт продвинутой системы владения и заимствования (ownership & borrowing). Вместо копирования байтов Rust позволяет ссылаться на данные напрямую, что значительно ускоряет обработку.
https://itnext.io/rust-the-joy-of-safe-zero-copy-parsers-8c8581db8ab2
👉 @rust_lib
2 222
Xplorer – красивый файловый менеджер, написанный на TypeScript и Rust.
Настраиваемый современный файловый менеджер, который работает на Windows, GNU/Linux и MacOS.
https://github.com/kimlimjustin/xplorer
👉 @rust_lib
2 222
Как я проектирую и разрабатываю расширения Python на Rust
Вы наверняка видели множество статей на тему "Python, Rust - производительность, бла-бла-бла... Вот, реализуем foo2plus2". Вся беда в том, что все эти статьи демонстрируют очень простые примеры уровня "hello-world". Напротив, в этой статье я хочу рассказать о том, как я проектирую комплексные расширения и почему я принимаю те или иные проектные решения.
https://habr.com/ru/articles/767254/
👉 @rust_lib
2 222
Microsoft активно развивает поддержку Windows-драйверов на языке Rust, предоставляя библиотеку windows-drivers-rs. Этот проект открывает новые возможности для создания надежных и безопасных драйверов с использованием преимуществ Rust, таких как управление памятью и предотвращение распространенных ошибок.
Основные возможности:
- Поддержка стандартных API Windows для разработки драйверов.
- Интеграция с инструментами Windows Driver Kit (WDK).
- Удобство разработки благодаря типобезопасным интерфейсам.
Проект продолжает активно развиваться, и сообщество приветствуется к участию. Отличная возможность попробовать Rust в системном программировании и внести вклад в развитие экосистемы Windows!
https://github.com/microsoft/windows-drivers-rs
👉 @rust_lib
2 222
Rust Programming
RUST Based Desktop on Linux - System76 chose this over C Programming!
RUST in the Linux Kernel - Coming sooner than you think!
Create your first RUST Program on LINUX | Rust Programming for Beginners
Use RUSTUP to create your first RUST Program on LINUX | Rust Programming for Beginners (EP1)
How to Create a Rust Project using Cargo on Linux (EP2)
How to Add a Crate/Dependency to Rust using Cargo (EP3)
RUST might be coming to UEFI BIOS Firmware on Linux
👉 @rust_lib
2 222
Rust Lang Уроки
Начало работы с языком программирования Rust & Visual Studio Code. Debugging & unit tests
Переменные и типы данных в Rust
Арифметические операции и операции сравнения. Язык Rust
Логические операции и конструкция if...else. Язык Rust
Почему Rust? ❤️ Конструкция match
Функции. Язык Rust
Структуры. Язык Rust. Анджелина и Бред вместе ❤️ благодаря структурам
Tuples | кортежи. Структуры-tuples. Язык Rust
Массивы. Язык программирования Rust.
Циклы loop | while | for. Язык Rust.
источник
👉 @rust_lib
2 222
Rust Programming Tutorial
#1 - Introduction To Rust Programming
#2 - Using Rust Tools (cargo, rustfmt)
#3 - Variables, Constants and Shadowing
#4 - Data Types
#5 - Console Input
#6 - Arithmetic and Type Casting
#7 - Conditions and Control Flow (if/else if/else)
#8 - Functions, Expressions & Statements
#9 - Memory Management, Heap & Stack
👉 @rust_lib
2 222
Учим Rust вместе
Hello World
Guessing Game
переменные и типы данных
функции и контроль выполнения программы
разбор задач
владение
заимствование и слайсы
структуры и методы
перечислимые типы
пакеты и модули
вектор
строки
HashMap
разбор задачи
обработка ошибок
дженерики
трейты
https://www.youtube.com/playlist?list=PLXhUgKrQD6UoggzaDTQ1luq3XMpYboMTM
👉 @rust_lib
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
