Rust
رفتن به کانال در Telegram
2 227
مشترکین
-224 ساعت
اطلاعاتی وجود ندارد7 روز
-130 روز
آرشیو پست ها
2 227
Dioxus
Это современный фреймворк для разработки UI на Rust, похожий на React, но с преимуществами производительности и безопасностью Rust. Он поддерживает рендеринг на Web, Desktop, Mobile и даже TUI.
https://github.com/DioxusLabs
👉 @rust_lib
2 227
Использование 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 227
Пишем простой драйвер на 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 227
MinDNS
Минимальный DNS-сервер, написанный на Rust, с системой правил и журналированием.
https://github.com/sammwyy/mindns
👉 @rust_lib
2 227
Учебное руководство по проекту на 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 227
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 227
Xplorer – красивый файловый менеджер, написанный на TypeScript и Rust.
Настраиваемый современный файловый менеджер, который работает на Windows, GNU/Linux и MacOS.
https://github.com/kimlimjustin/xplorer
👉 @rust_lib
2 227
Как я проектирую и разрабатываю расширения Python на Rust
Вы наверняка видели множество статей на тему "Python, Rust - производительность, бла-бла-бла... Вот, реализуем foo2plus2". Вся беда в том, что все эти статьи демонстрируют очень простые примеры уровня "hello-world". Напротив, в этой статье я хочу рассказать о том, как я проектирую комплексные расширения и почему я принимаю те или иные проектные решения.
https://habr.com/ru/articles/767254/
👉 @rust_lib
2 227
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 227
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 227
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 227
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 227
Учим Rust вместе
Hello World
Guessing Game
переменные и типы данных
функции и контроль выполнения программы
разбор задач
владение
заимствование и слайсы
структуры и методы
перечислимые типы
пакеты и модули
вектор
строки
HashMap
разбор задачи
обработка ошибок
дженерики
трейты
https://www.youtube.com/playlist?list=PLXhUgKrQD6UoggzaDTQ1luq3XMpYboMTM
👉 @rust_lib
2 227
Реализуем на Rust пул потоков с балансировкой нагрузки, пользуясь только стандартной библиотекой
Этот пост написан в основном под впечатлением от лекции Роба Пайка "Конкурентность – это не параллелизм".
Зачастую, пускаясь в решение задачи, полезно чётко видеть перед собой цель, которую хочешь достичь. Какая же цель стоит перед нами в данном случае? В простейшем смысле нам нужна система, которая позволяла бы:
🔹Распланировать некоторую работу так, чтобы ею занималось множество исполнителей
🔹Иметь возможность получать результаты работы, сделанной этими исполнителями
🔹Обеспечить, что исполнители достаточно загружены, но при этом не страдают от выгорания
Обратите внимание: система такого рода не привязана напрямую к компьютерам. Подобная модель вполне применима и к некоторому человеческому коллективу, которому требуется решить определённые задачи.
Как же нам смоделировать и решить эту проблему?
https://habr.com/ru/companies/timeweb/articles/761398/
👉 @rust_lib
2 227
Yazi — ⚡️ Молниеносно быстрый файловый менеджер для терминала
Это файловый менеджер для терминала, написанный на Rust, основанный на неблокирующем асинхронном вводе/выводе. Он ориентирован на предоставление эффективного, удобного и настраиваемого опыта управления файлами.
• Встроенная поддержка нескольких протоколов изображений
• Полная асинхронная поддержка: все операции ввода-вывода являются асинхронными, задачи ЦП распределяются по нескольким потокам, что позволяет максимально эффективно использовать доступные ресурсы.
• Встроенная подсветка кода
• Интеграция с fd, rg, fzf, zoxy
• Vim-подобное управление
• Поддержка нескольких вкладок, предварительный просмотр с возможностью прокрутки (для видео, PDF-файлов, архивов, каталогов, кода и т. д.)
• Система тем, пользовательские макеты, корзина для мусора
и многое другое...
Совместим с GNU/Linux, Windows, macOS
https://github.com/sxyazi/yazi
👉 @rust_lib
2 227
Fuzzer Development With Rust (Basic)
Каждый исследователь должен уметь разрабатывать собственные инструменты для fuzzing (фаззинга). По этой причине я начал обучать созданию таких инструментов с нуля в рамках этого проекта, чтобы исследователи могли использовать свои фаззеры для выявления уязвимостей в области безопасности в открытых инструментах, библиотеках и коде, которые компании разрабатывают для внутреннего использования.
В этом обучении мы объяснили все концепции с примерами на языке программирования Rust, чтобы обеспечить правильное понимание необходимых понятий.
https://github.com/raminfp/fuzzer-development-with-rust
👉 @rust_lib
2 227
Rust: рефакторинг для новичков
Недавно Нирадж Авинаш выложил свой код в группе по языку программирования Rust на LinkedIn. Его цель — изучить основы Rust, но я нашел его пример хорошей основой для своей статьи. Задача состоит в том, чтобы показать, как можно улучшать код на Rust поэтапно, и продемонстрировать, каких ошибок могут избегать новички, начиная с их кода. В целях упрощения, пожалуйста, не обращайте внимания на очевидные недостатки этой простой программы.
https://betterprogramming.pub/rust-refactoring-for-beginners-15a3270ce45d
👉 @rust_lib
2 227
Разбираем выравнивание данных и структуру памяти в Rust
Мне нравится оптимизировать код — определение и исправление неэффективных участков кода приносит некое особое чувство удовлетворения в отличие от закидывания проблемы железом. Ведь последнее — пустая трата ресурсов и выбросов углерода!
В процессе моей работы я много раз оптимизировал использование памяти датафреймов Python. Не учитывая различные особенности, зачастую наиболее быстрым решением является понижающее приведение — к примеру, конвертация столбца нулей и единиц из int в bool. И хотя это срабатывает, недавно к своему удивлению я узнал, что булевы числа не всегда отображаются в качестве одиночных битов. Так как же отображаются типы данных в памяти?
Подобно тому, как аккуратно организованные стеллажи книг в библиотеке помогают легко найти нужную информацию, отображение данных в памяти может сильно повлиять на производительность и эффективность использования памяти вашего приложения.
https://habr.com/ru/companies/beget/articles/856720/
👉 @rust_lib
2 227
CBLT — безопасный, быстрый и минималистичный веб-сервер на языке программирования Rust
Для изучения нового языка программирования я использую следующий подход. Сначала я читаю учебник по этому языку программирования, в котором объясняются синтаксис, идиомы, философия и принципы работы языка. После этого я пишу небольшой пет-проект на этом языке программирования. На пет-проекте я немного практикуюсь с новым языком, с его стандартными библиотеками и популярными фреймворками.
Чтобы погрузиться сильнее в язык, вместо пет-проекта я начинаю писать свои библиотеки для работы с базами данных (ORM), JSON, акторами, MVC веб-фреймворком, логированием и т.д. Библиотеки, которые вряд ли будут кому-то нужны, но они помогут мне лучше понять язык программирования. На удивление, с языком Rust я добрался до написания своего веб-сервера. Раньше такого не было. Думаю, это из-за того, что Rust — это язык системного программирования и грех на нём не попробовать заняться оптимизацией перформанса.
В итоге я столкнулся с тем, что Rust не имеет аналогов Nginx, Lighttpd, Caddy, HAProxy, Apache, Tomcat, Jetty и т.д. Все эти веб-сервера написаны на C, Go, Java и т.д. Имеются только веб-фреймворки: Actix, Axum, Rocket, Hyper и т.д.
https://habr.com/ru/articles/857306/
👉 @rust_lib
اکنون در دسترس! پژوهش تلگرام ۲۰۲۵ — مهمترین بینشهای سال 
