en
Feedback
Rust

Rust

Open in Telegram

Rust programming language По всем вопросам- @workakkk #VRHSZ

Show more
8 453
Subscribers
+524 hours
+337 days
+30830 days
Posts Archive
Rust
8 455
А расскажите, есть ли у вас хобби? Может быть вы чем-то необычным занимаетесь в свободное время? Кажется, нашлось одно очень
А расскажите, есть ли у вас хобби? Может быть вы чем-то необычным занимаетесь в свободное время? Кажется, нашлось одно очень необычное хобби — изучение философии. Вы задумывались, что в современном мире люди не так часто вспоминают об этой дисциплине? Не только же с помощью психологии и подкастов в интернете можно познавать мир и себя. Ребята из Страдариума недавно запустили формат ридингов философских текстов. Это формат, где участники вместе с профессором Дианой Гаспарян строчка за строчкой читают и разбирают важнейшие философские тексты. У Страдариума невероятное сообщество учеников. В чате ридингов участники со всего мира не только обсуждают философские вопросы, но и находят комьюнити единомышленников. Говорят, что на ридингах Страдариума очень много программистов и работников IT-сферы. Если вы уже участвовали в подобных ридингах, расскажите, как вам? В мае начинают читать «Левиафан» Гоббса, 400-летний текст, который объясняет современный мир. Читают оригинальный текст по изданию 1991 года, прямо на онлайн-встречах, а затем обсуждают прочитанное. Найти новое хобби и записаться на ридинг по скидке можно прямо здесь.

Rust
8 455
Профили времени компиляции в Rust: зачем, как и когда Возможность выбирать профиль времени компиляции в Rust может повысить п
Профили времени компиляции в Rust: зачем, как и когда Возможность выбирать профиль времени компиляции в Rust может повысить производительность, размер, удобство сопровождения, безопасность и переносимость вашего кода. Ниже приведены несколько аргументов в пользу того, почему вам следует использовать их при работе: https://betterprogramming.pub/compile-time-feature-flags-in-rust-why-how-when-129aada7d1b3 #rust @rust_code

Rust
8 455
🧑🏻‍💻Как эффективно управлять ошибками в коде и избегать багов? На открытом вебинаре 23 апреля в 20:00 МСК вы познакомитесь
🧑🏻‍💻Как эффективно управлять ошибками в коде и избегать багов? На открытом вебинаре 23 апреля в 20:00 МСК вы познакомитесь с мощной системой обработки ошибок в Rust и узнаете, почему этот подход считается одним из самых безопасных и надёжных. Вместе с экспертом вы освоите оператор «?» и работу с типами Result и Option. Вы получите практические навыки и сможете легко писать код без неожиданных сбоев и исключений, повысив надежность ваших приложений. 👉Регистрируйтесь на вебинар и получите специальную скидку на полный курс «Rust Developer. Basic»: https://otus.pw/mbYb/?erid=2W5zFJ8tVPE  Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Rust
8 455
🦀 less_slow.rs — продвинутый Rust Это практическое руководство по написанию высокопроизводительного кода на Rust. Цель — уве
🦀 less_slow.rs — продвинутый Rust Это практическое руководство по написанию высокопроизводительного кода на Rust. Цель — увеличить скорость и глубже понять, как работает производительный Rust-код. 🚀 В проекте: • Сравнение async и sync подходов • Работа с кеш-френдли структурами и layout-оптимизациями • SIMD-ускорения и многопоточность • Разбор быстродействия через микробенчмарки • Примеры быстрой сериализации и парсинга (JSON, Arrow, Parquet) • Работа с полями struct, layout, memory alignment 📦 Используемые библиотеки: rayon, tokio, simd, polars, serde, simd-json, tracing, mimalloc 💡 Must-read, если ты хочешь не просто писать на Rust, а писать быстрый и эффективный Rust-код. 🔧 Еще в серии: 🧠 less_slow.cpp — C++ без тормозов: ассемблер, кеши, SIMD, аллокации, парсинг JSON и трюки с памятью 👉 github.com/ashvardanian/less_slow.cpp 🐍 less_slow.py — Python на максималках: pandas vs polars, Cython, PyO3, Numba, Parquet, zero-copy 📚 Все проекты сопровождаются примерами, микробенчмарками и понятными объяснениями. 📚 Репозиторий: github.com/ashvardanian/less_slow.rs @rust_code

Rust
8 455
ЗАДАЧА : Что выведет этот код?

use std::mem;

struct Tracer(&'static str);

impl Tracer {
  fn new(name: &'static str) -> Tracer {
    println!("Creating {}", name);
    Tracer(name)
  }
}

impl Drop for Tracer {
  fn drop(&mut self) {
    println!("Dropping {}", self.0);
  }
}

struct Test {
  a: Tracer,
  b: Tracer,
}

fn main() {
  let mut t = Test {
    a: Tracer::new("A"),
    b: Tracer::new("B"),
  };

  mem::replace(&mut t.a, Tracer::new("X"));

  println!("Midpoint");
}
ОТВЕТ: ```Creating A Creating B Creating X Dropping A Midpoint Dropping B Dropping X ``` 1. Создание: Tracer::new("A") → Creating A 2. mem::replace(...): Creating X Dropping A 3. println!("Midpoint"): Midpoint 4. Drop поля: B, затем X Этот код демонстрирует поведение Drop при замене полей структуры в Rust через std::mem::replace. @rust_code

Rust
8 455
⚙️Уже работаете с Rust, но хотите эффективно интегрировать его с другими языками? Или интересуетесь, как устроен процесс сбор
⚙️Уже работаете с Rust, но хотите эффективно интегрировать его с другими языками? Или интересуетесь, как устроен процесс сборки и линковки в этом языке?  📆На открытом вебинаре 24 апреля в 20:00 мск мы подробно разберем, как собирать и линковать библиотеки в Rust, как использовать Rust-библиотеки в других языках, а также реализуем Си ABI (Application Binary Interface). Вы получите знания, которые помогут вам повысить производительность ваших проектов и интегрировать Rust в существующие решения. 👨‍💻Урок будет полезен всем, кто хочет углубить свои знания в Rust, повысить квалификацию и навыки работы с библиотеками и системами. Вы сможете применять полученные знания в реальных проектах. 👉Присоединяйтесь к открытому вебинару и получите скидку на большое обучение «Rust Developer. Professional»: https://otus.pw/PRWxe/?erid=2W5zFFz8mQt Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Rust
8 455
👣 Вопрос: Какие строки и в каком порядке будут выведены на консоль при запуске этой программы? Приведите полный список выводимых сообщений.этого кода.

use std::mem;

struct Tracer(&'static str);

impl Drop for Tracer {
    fn drop(&mut self) {
        println!("Dropping {}", self.0);
    }
}

struct Container {
    tracer: Tracer,
}

fn make_tracer(name: &'static str) -> Tracer {
    println!("Creating {}", name);
    Tracer(name)
}

fn main() {
    let a = make_tracer("a");
    let b = make_tracer("b");
    {
        let temp = make_tracer("temp");
        println!("Inside block");
        // temp перемещается в c
        let c = temp;
        println!("Exiting block");
    } // <- здесь c (то есть «temp») умирает

    let mut container = Container {
        tracer: make_tracer("container1"),
    };
    // замена поля: старый контейнер1 будет сброшен
    container.tracer = make_tracer("container2");

    println!("Before dropping b explicitly");
    mem::drop(b);
    println!("End of main");
} // <- здесь умирают: container.tracer ("container2"), затем a
🔜 Ответ Вот что выведется на консоль, построчно: ```bash Creating a Creating b Creating temp Inside block Exiting block Dropping temp Creating container1 Creating container2 Dropping container1 Before dropping b explicitly Dropping b End of main Dropping container2 Dropping a``` Пояснение по шагам: let a = make_tracer("a"); Сначала вызывается make_tracer("a"), который печатает Creating a и возвращает Tracer("a"). let b = make_tracer("b"); Аналогично: Creating b Блок { … }: let temp = make_tracer("temp"); → Creating temp println!("Inside block"); → Inside block let c = temp; — просто перемещение, без нового вывода. println!("Exiting block"); → Exiting block В конце блока выходит из области видимости c (он же temp), срабатывает Drop → Dropping temp Инициализация container: rust let mut container = Container { tracer: make_tracer("container1"), }; → Creating container1 Перезапись поля tracer: ```rust container.tracer = make_tracer("container2"); Сначала вычисляется правая часть → Creating container2. Затем старый container.tracer (то есть container1) сбрасывается → Dropping container1.``` Явное удаление b: ```rust println!("Before dropping b explicitly"); mem::drop(b); → Before dropping b explicitly Затем drop(b) вызывает Drop для b → Dropping b``` Выход из main: ```rust println!("End of main"); → End of main``` После этого по правилам Rust объекты уничтожаются в порядке обратном созданию (LIFO): Сначала поле container.tracer (уже “container2”) → Dropping container2 Затем переменная a → Dropping a Таким образом и получается приведённая последовательность.

Rust
8 455
⚡️Хотите стать востребованным разработчиком и освоить один из самых перспективных языков программирования? Курс «Rust Develop
⚡️Хотите стать востребованным разработчиком и освоить один из самых перспективных языков программирования? Курс «Rust Developer. Basic» от OTUS создан для тех, кто уже знаком с программированием и хочет уверенно развиваться в современной разработке. Rust гарантирует безопасность, высокую производительность и востребован в веб-разработке, блокчейне, анализе данных и даже в создании встроенных систем. Вас ждут живые лекции от опытных экспертов, актуальные материалы и практика на реальных задачах. Вы научитесь писать безопасный и производительный код, создавать сложные многопоточные приложения, асинхронно работать с сетью и файловыми системами. 👉Оставьте заявку прямо сейчас и получите скидку на обучение: https://otus.pw/oMlC/?erid=2W5zFGjLASU  Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Rust
8 455
Repost from Python/ django
🖥 Python на скорости Rust Новый Function (fxn) — фреймворк, который компилирует Python-функции в нативный код с производительностью, сравнимой с Rust. 🧠 Как это работает? - Использует символическое трассирование на CPython для анализа функций - Генерирует промежуточное представление (IR) - Транслирует IR в C++ или Rust, а затем компилирует в бинарный код - Поддерживает платформы: Linux, Android, WebAssembly и др. 📦 Пример: @compile def fma(x: float, y: float, z: float) -> float: return x * y + z После компиляции вы получаете нативный бинарник, который можно запускать без интерпретатора Python. 🔗 Подробнее 🔗 Github @pythonl #Python #Rust #fxn #Compiler #Performance #AI #ML #Wasm

Rust
8 455
👣 garde — это библиотека для валидации данных в Rust 🦀, то есть проверки, что структура или переменные соответствуют опреде
👣 garde — это библиотека для валидации данных в Rust 🦀, то есть проверки, что структура или переменные соответствуют определённым правилам (например, "email должен быть валидным", "возраст больше 18", "строка не пустая" и т.д.). 🧠 garde позволяет: ✅ Легко описывать правила валидации прямо внутри структур (через атрибуты). 🔁 Работать с вложенными структурами (inner types). 🧊 Поддерживает newtypes — обёртки над типами. 🛠️ Писать свои кастомные валидаторы. ⚡ Проверка происходит во время исполнения, но декларативно выглядит как часть типа. 📦 Пример использования rust use garde::Validate; #[derive(Validate)] struct User { #[garde(length(min = 3))] username: String, #[garde(email)] email: String, } Тут username должен быть минимум из 3 символов, а email — валидный адрес. ⭐ GitHub: https://github.com/jprochazk/garde #rustlang #type #validation #programming #library #opensource

Rust
8 455
Machine Learning na Rust ✨ 🔍 Ключевое из статьи The Beginner’s Guide to Machine Learning with Rust: ▪ Rust — безопасный и быстрый: Исключает критические ошибки, дает скорость C/C++ ▪ ndarray — аналог NumPy ▪ tch-rs — обертка над PyTorch ▪ linfa — алгоритмы МЛ на Rust ▪ Cargo — для управления проектами 📝 Rust еще рано заменять Python, но уже есть что пощупать 🚀

Rust
8 455
🎶 Glicol — это экспериментальная среда для live-кодинга, где звуки рождаются из соединения узлов, как в модульном синтезатор
🎶 Glicol — это экспериментальная среда для live-кодинга, где звуки рождаются из соединения узлов, как в модульном синтезаторе. Написанный на Rust, он работает где угодно: в браузере, как VST-плагин или даже на аппаратуре вроде Bela. Можно начинать с простых битов, а потом углубляться в сэмплерные точные синтезы — без необходимости устанавливать что-либо. Особенность Glicol — в его низком пороге входа, но и без ограничений для профессионалов. 🤖 GitHub @rust_code

Rust
8 455
🎶 Glicol — это экспериментальная среда для live-кодинга, где звуки рождаются из соединения узлов, как в модульном синтезатор
🎶 Glicol — это экспериментальная среда для live-кодинга, где звуки рождаются из соединения узлов, как в модульном синтезаторе. Написанный на Rust, он работает где угодно: в браузере, как VST-плагин или даже на аппаратуре вроде Bela. Можно начинать с простых битов, а потом углубляться в сэмплерные точные синтезы — без необходимости устанавливать что-либо. Особенность Glicol — в его низком пороге входа, но и без ограничений для профессионалов. 🤖 GitHub @javascriptv

Rust
8 455
💥 Urx (сокращение от "Extracts URLs") — это инструмент на базе Rust, который я создал для сбора URL из различных OSINT архив
💥 Urx (сокращение от "Extracts URLs") — это инструмент на базе Rust, который я создал для сбора URL из различных OSINT архивов. В результате для указанных доменов формируется обширный список URL‑адресов, который можно использовать в исследованиях, тестировании безопасности или при аналитической работе. Основные функции Urx: ▪ Получение URL‑адресов сразу из нескольких источников (Wayback Machine, Common Crawl, OTX) ▪ Гибкая фильтрация по расширениям, шаблонам или заранее заданным пресетам (например, «no‑image» для исключения изображений) ▪ Поддержка различных форматов вывода (plain text, JSON, CSV) ▪ Возможность направлять результаты в консоль, файлы или другие инструменты (через stdin для пайплайнов) ▪ Валидация и проверка URL‑адресов по статус‑кодам и паттернам, а также извлечение дополнительных ссылок из собранных страниц Urx значительно упрощает процесс сбора и анализа URL, сочетая высокую скорость работы (Rust, асинхронная обработка) и разнообразие функций для фильтрации, сортировки и экспорта данных. Установка: cargo install urx 🔗 Github @rust_code #security #bugbounty

Rust
8 455
🚀 Выпуск Rust 1.86. Подготовка официальной спецификации языка Rust Опубликован релиз языка программирования общего назначения Rust 1.86, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки). Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io. Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок. 🔗 Основные новшества 🔗Описание релиза @rust_code

Rust
8 455
⚡️ Челлендж: 12 IT-проектов за 12 месяцев — попробуй сам! Собрали крутые кейсы, для тех, кто хочет запустить свой первый IT-продукт, но не знаете, с чего начать, присмотрись к комьюнити инди-хакеров, которые тестируют простой, но эффективный подход: ✅ Разработка + запуск за 1 месяц ✅ Минимальные вложения (средний бюджет на продвижение — $150) ✅ Честный разбор: что сработало, а что — нет Вот несколько примеров их проектов: 👉 Кейс о генераторе картинок – американцы платят $40, хотя есть бесплатные аналоги. Разработка заняла 4 недели. 👉 Темная тема с тарифами от $5 до $99 – 2 недели работы, пассивный доход, сравнимый с зарплатой разработчика. 👉 Что бывает, если пилить сложный продукт 2 года без теста на рынке – не повторяй эту ошибку! 👉 Математическое приложение, которое через 4 месяца вышло на $1200/месяц – всего за 30 дней разработки. 👉 Бот для фотокниг, который принес 1 700 000 рублей – кейс с разбором ошибок и удачных решений. 💡 Что полезного можно взять из их опыта? 1️⃣ Метод быстрого запуска: как сделать рабочий продукт за 1 месяц. 2️⃣ Эффективное продвижение: как привлечь тысячи пользователей без больших бюджетов. Здесь можно следить за быстрыми запусками и, возможно, попробовать создать свой продукт! 🚀

Rust
8 455
🖥 Simon — легковесный веб-мониторинг для систем с поддержкой Docker и отслеживанием ресурсов. Основное: мониторинг CPU, памяти, диска и сети в реальном времени, адаптивный интерфейс, оповещения при превышении порогов, единый бинарник без зависимостей. Есть аутентификация через bcrypt и уведомления с вебхуками для Discord, Slack и др. 📌 Github

Rust
8 455
🚀 Gatehouse – это гибкая библиотека для реализации механизмов авторизации, которая объединяет в себе несколько моделей контр
🚀 Gatehouse – это гибкая библиотека для реализации механизмов авторизации, которая объединяет в себе несколько моделей контроля доступа: RBAC (role-based), ABAC (attribute-based) и ReBAC (relationship-based). Этот инструмент разработан на Rust и предназначен для решения сложных задач авторизации в современных приложениях. Ниже приведены основные особенности и преимущества Gatehouse: ▪ Многообразие парадигм авторизации: Gatehouse поддерживает три различных подхода к контролю доступа, что позволяет разработчикам создавать решения, максимально точно соответствующие требованиям их приложений. ▪ Композиция политик: Возможность объединения различных политик с помощью логических операторов (AND, OR, NOT) дает гибкость при построении сложных правил авторизации. ▪ Подробное трассирование: Библиотека предоставляет детальные отчеты об оценке политик, что значительно упрощает отладку и аудит решений по безопасности. ▪ Fluent Builder API: Удобный и интуитивно понятный API позволяет быстро и безопасно создавать кастомные политики, минимизируя вероятность ошибок при разработке. ▪ Типобезопасность и поддержка async: Благодаря сильной типизации и встроенной поддержке асинхронного программирования, Gatehouse легко интегрируется в современные высоконагруженные системы. Преимущества Gatehouse над другими инструментами заключаются в его универсальности и гибкости: вместо того чтобы выбирать между разными моделями авторизации, разработчики могут использовать объединённое решение, которое адаптируется под любые сценарии и требования безопасности. Это делает Gatehouse отличным выбором для создания масштабируемых и надёжных систем контроля доступа в сложных программных продуктах. 🔗 Github @rust_code

Rust
8 455
🖥 Hoppscotch — это открытая платформа для разработки API, предназначенная для упрощения тестирования и взаимодействия с API!
🖥 Hoppscotch — это открытая платформа для разработки API, предназначенная для упрощения тестирования и взаимодействия с API! 💡 Она предоставляет удобный и быстрый интерфейс для отправки HTTP-запросов и получения ответов в реальном времени. Поддерживаются различные HTTP-методы, включая GET, POST, PUT, PATCH, DELETE и другие. Платформа также предлагает настраиваемые темы оформления и возможность установки в виде прогрессивного веб-приложения (PWA). 🔐 Лицензия: MIT 🖥 Github @rust_code

Rust
8 455
🔥Разработчики GRUB2 рассматривают возможность использования языка Rust Владимир Сербиненко, один из трёх мэйнтейнеров загрузчика GRUB2, внёсший в кодовую базу более пяти тысяч изменений, выставил на обсуждение возможность написания модулей для GRUB2 c использованием языка Rust. Владимир представил первые результаты экспериментов с добавлением поддержки Rust в GRUB2 и созданием необходимых обвязок. Для GRUB также подготовлены изменения, позволяющие использовать разделяемые библиотеки (".so", ET_DYN) для модулей, вместо связывания на уровне объектных файлов (".o", ET_REL). Инициатива пока позиционируется как отдельный эксперимент, который не будет влиять на разработку GRUB2. В качестве оптимального применения Rust в GRUB упоминается написание модулей для новых файловых систем. Также не исключается переписывание на Rust кода для работы с дисковыми разделами и GPT. Предполагается, что использование Rust поможет проекту уменьшить вероятность появления некоторых видов ошибок, особенно в коде модулей, содержащем множество больших и сложных процедур парсинга. В феврале в результате аудита кодовой базы GRUB были выявлены 72 проблемы с безопасностью, 21 из которых признаны опасными уязвимостями, пригодными для обхода механизма верифицированной загрузки UEFI Secure Boot. 20 из 21 уязвимостей вызваны ошибками при работе с памятью, приводившими к переполнению буфера или обращению к памяти после её освобождения. Дополнительно можно отметить выпуск проекта GNU Boot 0.1 RC6, в состав которого вошли вышеотмеченные исправления уязвимостей (в самом GRUB2 исправления продолжают распространяться в виде патчей без формирования отдельного релиза). Проект GNU Boot развивает замену проприетарным прошивкам UEFI и BIOS, основанную на CoreBoot, но применяющую более жёсткие требования к включению бинарных компонентов. GNU Boot преподносится как "coreboot-libre", т.е. как редакция CoreBoot, избавленная от блобов и несвободных компонентов, по аналогии с тем, как проект Linux-libre развивает очищенный вариант ядра Linux. Отдельно развиваются похожие проекты Libreboot и Canoeboot. @rust_code