en
Feedback
Rust

Rust

Open in Telegram

Полезный контент по программированию на Rust

Show more
2 230
Subscribers
+324 hours
+37 days
+230 days
Posts Archive
Rust
2 230
Как я проектирую и разрабатываю расширения Python на Rust Вы наверняка видели множество статей на тему "Python, Rust - произв
Как я проектирую и разрабатываю расширения Python на Rust Вы наверняка видели множество статей на тему "Python, Rust - производительность, бла-бла-бла... Вот, реализуем foo2plus2". Вся беда в том, что все эти статьи демонстрируют очень простые примеры уровня "hello-world". Напротив, в этой статье я хочу рассказать о том, как я проектирую комплексные расширения и почему я принимаю те или иные проектные решения. https://habr.com/ru/articles/767254/ 👉 @rust_lib

Rust
2 230
Microsoft активно развивает поддержку Windows-драйверов на языке Rust, предоставляя библиотеку windows-drivers-rs. Этот проек
Microsoft активно развивает поддержку Windows-драйверов на языке Rust, предоставляя библиотеку windows-drivers-rs. Этот проект открывает новые возможности для создания надежных и безопасных драйверов с использованием преимуществ Rust, таких как управление памятью и предотвращение распространенных ошибок. Основные возможности: - Поддержка стандартных API Windows для разработки драйверов. - Интеграция с инструментами Windows Driver Kit (WDK). - Удобство разработки благодаря типобезопасным интерфейсам. Проект продолжает активно развиваться, и сообщество приветствуется к участию. Отличная возможность попробовать Rust в системном программировании и внести вклад в развитие экосистемы Windows! https://github.com/microsoft/windows-drivers-rs 👉 @rust_lib

Rust
2 230
+6
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

Rust
2 230
+9
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

Rust
2 230
+7
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

Rust
2 230
+9
Учим Rust вместе Hello World Guessing Game переменные и типы данных функции и контроль выполнения программы разбор задач владение заимствование и слайсы структуры и методы перечислимые типы пакеты и модули вектор строки HashMap разбор задачи обработка ошибок дженерики трейты https://www.youtube.com/playlist?list=PLXhUgKrQD6UoggzaDTQ1luq3XMpYboMTM 👉 @rust_lib

Rust
2 230
Реализуем на Rust пул потоков с балансировкой нагрузки, пользуясь только стандартной библиотекой Этот пост написан в основном
Реализуем на Rust пул потоков с балансировкой нагрузки, пользуясь только стандартной библиотекой Этот пост написан в основном под впечатлением от лекции Роба Пайка "Конкурентность – это не параллелизм". Зачастую, пускаясь в решение задачи, полезно чётко видеть перед собой цель, которую хочешь достичь. Какая же цель стоит перед нами в данном случае? В простейшем смысле нам нужна система, которая позволяла бы: 🔹Распланировать некоторую работу так, чтобы ею занималось множество исполнителей 🔹Иметь возможность получать результаты работы, сделанной этими исполнителями 🔹Обеспечить, что исполнители достаточно загружены, но при этом не страдают от выгорания Обратите внимание: система такого рода не привязана напрямую к компьютерам. Подобная модель вполне применима и к некоторому человеческому коллективу, которому требуется решить определённые задачи. Как же нам смоделировать и решить эту проблему? https://habr.com/ru/companies/timeweb/articles/761398/ 👉 @rust_lib

Rust
2 230
Yazi — ⚡️ Молниеносно быстрый файловый менеджер для терминала Это файловый менеджер для терминала, написанный на Rust, основанный на неблокирующем асинхронном вводе/выводе. Он ориентирован на предоставление эффективного, удобного и настраиваемого опыта управления файлами. • Встроенная поддержка нескольких протоколов изображений • Полная асинхронная поддержка: все операции ввода-вывода являются асинхронными, задачи ЦП распределяются по нескольким потокам, что позволяет максимально эффективно использовать доступные ресурсы. • Встроенная подсветка кода • Интеграция с fd, rg, fzf, zoxy • Vim-подобное управление • Поддержка нескольких вкладок, предварительный просмотр с возможностью прокрутки (для видео, PDF-файлов, архивов, каталогов, кода и т. д.) • Система тем, пользовательские макеты, корзина для мусора и многое другое... Совместим с GNU/Linux, Windows, macOS https://github.com/sxyazi/yazi 👉 @rust_lib

Rust
2 230
Fuzzer Development With Rust (Basic) Каждый исследователь должен уметь разрабатывать собственные инструменты для fuzzing (фаззинга). По этой причине я начал обучать созданию таких инструментов с нуля в рамках этого проекта, чтобы исследователи могли использовать свои фаззеры для выявления уязвимостей в области безопасности в открытых инструментах, библиотеках и коде, которые компании разрабатывают для внутреннего использования. В этом обучении мы объяснили все концепции с примерами на языке программирования Rust, чтобы обеспечить правильное понимание необходимых понятий. https://github.com/raminfp/fuzzer-development-with-rust 👉 @rust_lib

Rust
2 230
Rust: рефакторинг для новичков Недавно Нирадж Авинаш выложил свой код в группе по языку программирования Rust на LinkedIn. Ег
Rust: рефакторинг для новичков Недавно Нирадж Авинаш выложил свой код в группе по языку программирования Rust на LinkedIn. Его цель — изучить основы Rust, но я нашел его пример хорошей основой для своей статьи. Задача состоит в том, чтобы показать, как можно улучшать код на Rust поэтапно, и продемонстрировать, каких ошибок могут избегать новички, начиная с их кода. В целях упрощения, пожалуйста, не обращайте внимания на очевидные недостатки этой простой программы. https://betterprogramming.pub/rust-refactoring-for-beginners-15a3270ce45d 👉 @rust_lib

Rust
2 230
Разбираем выравнивание данных и структуру памяти в Rust Мне нравится оптимизировать код — определение и исправление неэффекти
Разбираем выравнивание данных и структуру памяти в Rust Мне нравится оптимизировать код — определение и исправление неэффективных участков кода приносит некое особое чувство удовлетворения в отличие от закидывания проблемы железом. Ведь последнее — пустая трата ресурсов и выбросов углерода! В процессе моей работы я много раз оптимизировал использование памяти датафреймов Python. Не учитывая различные особенности, зачастую наиболее быстрым решением является понижающее приведение — к примеру, конвертация столбца нулей и единиц из int в bool. И хотя это срабатывает, недавно к своему удивлению я узнал, что булевы числа не всегда отображаются в качестве одиночных битов. Так как же отображаются типы данных в памяти? Подобно тому, как аккуратно организованные стеллажи книг в библиотеке помогают легко найти нужную информацию, отображение данных в памяти может сильно повлиять на производительность и эффективность использования памяти вашего приложения. https://habr.com/ru/companies/beget/articles/856720/ 👉 @rust_lib

Rust
2 230
CBLT — безопасный, быстрый и минималистичный веб-сервер на языке программирования Rust Для изучения нового языка программиров
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

Rust
2 230
Упрощенный пример на Rust обучения нейронной сети на основе Candle Framework от Hugging Face Я недавно изучал примеры использ
Упрощенный пример на Rust обучения нейронной сети на основе Candle Framework от Hugging Face Я недавно изучал примеры использования нейронных сетей из библиотеки Candle от Hugging Face и обратил внимание, что они довольно сложны для понимания людей, которые только начинают знакомство с нейросетями. Поэтому я решил написать максимально упрощенный пример кода на Rust, который демонстрирует обучение и использование простейшей нейросети. https://habr.com/ru/articles/758658/ 👉 @rust_lib

Rust
2 230
CloudFlare отказывается от Nginx в пользу in-house HTTP-прокси на Rust Сегодня мы поговорим о Pingora, новом HTTP-прокси, кот
CloudFlare отказывается от Nginx в пользу in-house HTTP-прокси на Rust Сегодня мы поговорим о Pingora, новом HTTP-прокси, который мы создали у себя внутри с помощью Rust. Прокси обслуживает более 1 триллиона запросов в день, форсирует производительность и предоставляет множество новых функций для клиентов Cloudflare, при этом требуя всего лишь треть ресурсов CPU и памяти нашей предыдущей прокси-инфраструктуры. Rus https://habr.com/ru/articles/688634/ Eng https://blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connects-cloudflare-to-the-internet/ 👉 @rust_lib

Rust
2 230
Идиоматический код на Rust для тех, кто перешел с других языков программирования Привет, дорогие читатели! В предыдущей моей
Идиоматический код на Rust для тех, кто перешел с других языков программирования Привет, дорогие читатели! В предыдущей моей статье "Как легко перейти с Java на Rust" я делился с вами советами по переходу на Rust и уменьшению количества "потерянной крови" на этом пути. Но что делать дальше, когда вы уже перешли на Rust, и ваш код хотя бы компилируется и работает? Сегодня я хочу поделиться с вами некоторыми идеями о том, как писать идиоматический код на Rust, особенно если вы привыкли к другим языкам программирования. https://habr.com/ru/articles/758566/ 👉 @rust_lib

Rust
2 230
Pake 🤱🏻 Превратите любую веб-страницу в настольное приложение с помощью Rust. Pake поддерживает Mac, Windows и Linux. https://github.com/tw93/Pake 👉 @rust_lib

Rust
2 230
Попробуйте Tauri Хочу рассказать про один из моих любимых Opensource проектов: Tauri. Это среда для создания десктопно-мобиль
Попробуйте Tauri Хочу рассказать про один из моих любимых Opensource проектов: Tauri. Это среда для создания десктопно-мобильных приложений на JavaScript, но быстрых и легковесных. С опциональными дополнениями на Rust, а через него и на всех других языках. Достоинства Поддерживается Линь, Вынь и Дрюнь и всякое Ябло. EXEшник HelloWorld весит 1 мегабайт ( ну 5, если не ужиматься в угол как сирота в барском доме ). В памяти занимает на Win 11 200 Мб. (Из них >90% приходится на системные компоненты, расшаренные с другими программами. Поэтому простые средства измерения покажут 5 Мб). Кто-то считает, что это много. Покажите меньше. Только HelloWorld у нас будет такой: в верхней половине окна играет видео с вэба со звуком, а под ним кнопка закрыть, которая при наведении мыши начинает вращаться, и оба эти компонента рендерятся на GPU. https://habr.com/ru/articles/850192/ 👉 @rust_lib

Rust
2 230
Шпаргалка по Rust Основные понятия - Переменные и типы данных: - По умолчанию переменные являются неизменяемыми. Для создания изменяемой переменной используйте mut.

    let mut x = 5; // изменяемая переменная
    x = 10; // корректно
    
- Основные типы данных: - Целые числа: i32, u32, i64, u64, isize, usize. - Числа с плавающей точкой: f32, f64. - Логический тип: bool. - Символ: char. - Строки: String (изменяемая) и &str (неизменяемая). - Функции: - Определение функции:

    fn имя_функции(параметры: Тип) -> Тип {
        // тело функции
    }
    
- Пример функции:

    fn add(x: i32, y: i32) -> i32 {
        x + y
    }
    
- Управляющие конструкции: - Условия:

    if условие {
        // код
    } else if условие {
        // код
    } else {
        // код
    }
    
- Циклы: - Цикл `loop`:

      loop {
          // бесконечный цикл
      }
      
- Цикл `for`:

      for элемент in коллекция {
          // код
      }
      
- Цикл `while`:

      while условие {
          // код
      }
      
Структуры и перечисления - Структуры:

  struct ИмяСтруктуры {
      поле1: Тип,
      поле2: Тип,
  }
  
Пример:

  struct Point {
      x: i32,
      y: i32,
  }
  
- Перечисления:

  enum ИмяПеречисления {
      Вариант1,
      Вариант2,
  }
  
Пример:

  enum Direction {
      Up,
      Down,
      Left,
      Right,
  }
  
Введение в владение и заимствование - Владение: Каждый ресурс в Rust имеет единственного владельца. - Заимствование: - Неизменяемое заимствование:

    let s = String::from("Hello");
    let r = &s; // r — неизменяемая ссылка на s
    
- Изменяемое заимствование:

    let mut s = String::from("Hello");
    let r = &mut s; // r — изменяемая ссылка на s
    
Обработка ошибок - Результат:

  enum Result<T, E> {
      Ok(T),
      Err(E),
  }
  
Пример функции с обработкой ошибок:

  fn divide(x: i32, y: i32) -> Result<i32, String> {
      if y == 0 {
          Err(String::from("Деление на ноль"))
      } else {
          Ok(x / y)
      }
  }
  
- Паника: - Используйте panic!() для критических ошибок, которые нельзя обработать. Обобщения - Обобщенные типы позволяют писать более универсальный код:

  fn print_vector<T: std::fmt::Debug>(vec: Vec<T>) {
      println!("{:?}", vec);
  }
  
Работа с модулями - Создание модуля:

  mod имя_модуля {
      pub fn функция() {
          // код
      }
  }
  
- Импорт модуля:

  use имя_модуля::функция;
  
Стандартные библиотеки - Работа с коллекциями: - Векторы:

    let mut vec = Vec::new();
    vec.push(1);
    vec.push(2);
    
- Хэш-таблицы:

    use std::collections::HashMap;

    let mut map = HashMap::new();
    map.insert("ключ", "значение");
    
Полезные команды - Компиляция и выполнение:

  cargo build     # Компиляция проекта
  cargo run       # Запуск проекта
  
- Запуск тестов:

  cargo test
  
👉 @rust_lib

Rust
2 230
Битовые поля в Rust В этой статье мы рассмотрим использование битовых полей в Rust и их значимость для создания оптимизирован
Битовые поля в Rust В этой статье мы рассмотрим использование битовых полей в Rust и их значимость для создания оптимизированных приложений, работающих с сетевыми протоколами. Битовые поля позволяют компактно представлять данные, минимизируя использование памяти и повышая производительность. https://habr.com/ru/companies/otus/articles/845190/ 👉 @rust_lib

Rust
2 230
Как я написал JVM на Rust В последнее время я серьезно взялся за изучение языка Rust, и, как поступил бы на моем месте любой
Как я написал JVM на Rust В последнее время я серьезно взялся за изучение языка Rust, и, как поступил бы на моем месте любой адекватный программист, после написания нескольких небольших программ я решил попробовать сделать что-то немного более амбициозное: я написал на Rust виртуальную машину Java. Не став сильно оригинальничать, я назвал ее просто rjvm. Вы можете найти ее код на GitHub. Хочу подчеркнуть, что это лишь простенькая модель JVM, созданная в учебных целях, а не серьезная реализация. В частности, она не поддерживает: дженерики потоки рефлексию аннотации I/O just in time компилятор интернирование строк https://habr.com/ru/companies/otus/articles/755946/ original https://andreabergia.com/blog/2023/07/i-have-written-a-jvm-in-rust/ 👉 @rust_lib