uz
Feedback
Rust

Rust

Kanalga Telegram’da o‘tish

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

Ko'proq ko'rsatish
2 227
Obunachilar
-224 soatlar
Ma'lumot yo'q7 kunlar
-130 kunlar
Postlar arxiv
Rust
2 227
Упрощенный пример на Rust обучения нейронной сети на основе Candle Framework от Hugging Face Я недавно изучал примеры использ
Упрощенный пример на Rust обучения нейронной сети на основе Candle Framework от Hugging Face Я недавно изучал примеры использования нейронных сетей из библиотеки Candle от Hugging Face и обратил внимание, что они довольно сложны для понимания людей, которые только начинают знакомство с нейросетями. Поэтому я решил написать максимально упрощенный пример кода на Rust, который демонстрирует обучение и использование простейшей нейросети. https://habr.com/ru/articles/758658/ 👉 @rust_lib

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

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

Rust
2 227
Попробуйте 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 227
Шпаргалка по 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 227
Битовые поля в Rust В этой статье мы рассмотрим использование битовых полей в Rust и их значимость для создания оптимизирован
Битовые поля в Rust В этой статье мы рассмотрим использование битовых полей в Rust и их значимость для создания оптимизированных приложений, работающих с сетевыми протоколами. Битовые поля позволяют компактно представлять данные, минимизируя использование памяти и повышая производительность. https://habr.com/ru/companies/otus/articles/845190/ 👉 @rust_lib

Rust
2 227
Как я написал 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

Rust
2 227
Rust for Network Programming and Automation, 2nd Edition: Work around designing networks, TCP/IP protocol, packet analysis and performance monitoring using Rust 1.68 Автор: Gilbert Stew (2024) Разработанная с учетом потребностей тех, кто интересуется сетевым программированием и автоматизацией, эта обновленная книга исследует реалистичность сетевого программирования в рамках надежной экосистемы Rust. Построенная на базе Rust 1.68, эта книга шаг за шагом проведет вас через основы сетевых протоколов, анализа пакетов и сетевого администрирования с помощью актуального и подробного материала. 👉 @rust_lib

Rust
2 227
Huey Генерирует гифку, которая циклически перебирает все оттенки! https://github.com/ahhhh6980/huey 👉 @rust_lib

Rust
2 227
Regex engine internals as a library [full] Дисклеймер Это полный перевод большой и сложной статьи по внутреннему устройству к
Regex engine internals as a library [full] Дисклеймер Это полный перевод большой и сложной статьи по внутреннему устройству крейта regex свежей версии. Перевод большей частью выполнялся для себя, чтобы поднабить скилл в английском. По возможности постарался сохранить авторский стиль. Если всегда было интересно, как оно там под капотом устроено, а в книге Фриддла или в книге дракона вы не нашли подробностей, то добро пожаловать - будет интересно и очень сложно. Для понимания потребуются: 🟢Знания основ теории автоматов (знать и понимать отличия ДКА от НКА) 🟢Иметь базовое представление о том, что такое регулярные выражения 🟢Начальные знания по языку Rust 🟢Общие представления отличия различных структур данных друг от друга https://habr.com/ru/articles/755940/ original https://blog.burntsushi.net/regex-internals/ 👉 @rust_lib

Rust
2 227
Просто спарсь что угодно с помощью языка Rust (ну… или просто скачай файл) Известно, что Rust — типобезопасный язык программирования, код которого проверяется компилятором ещё до сборки. С одной стороны это хорошо: меньше вероятности внезапного сбоя в самый неподходящий момент. С другой стороны — код, выполняющий одну функцию, в итоге может стать очень сложным и иногда нечитаемым. В пример привожу функцию, которая парсит названия валют с сайта floatrates и выводит их (пожалуйста, напишите в комментариях, за сколько минут вы поняли эту строку):

// main.rs
use anyhow::anyhow;
use reqwest::blocking::get;
use scraper::{Html, Selector};

fn main() -> anyhow::Result<()> {
    let body = get("http://www.floatrates.com/json-feeds.html")?.text()?;
    let document = Html::parse_document(&body);
    let selector = Selector::parse("div.bk-json-feeds>div.body>ul>li>a")
        .map_err(|err| anyhow!("{err}"))?;

    for element in document.select(&selector) {
        println!("{}", element.inner_html());
    }
    Ok(())
}
В этой статье я хочу рассказать о своей новой библиотеке, значительно упрощающей парсинг на Rust. Приятного чтения! https://habr.com/ru/articles/755728/ 👉 @rust_lib

Rust
2 227
ytdlp-gui Это графический интерфейс для yt-dlp, написанный на Rust Его можно легко установить в GNU/Linux и Windows системах
ytdlp-gui Это графический интерфейс для yt-dlp, написанный на Rust Его можно легко установить в GNU/Linux и Windows системах https://github.com/BKSalman/ytdlp-gui 👉 @rust_lib

Rust
2 227
Полезные фичи в Rust Rust — это мощный и безопасный язык, его часто выбирают благодаря способности предотвращать множество ра
Полезные фичи в Rust Rust — это мощный и безопасный язык, его часто выбирают благодаря способности предотвращать множество распространённых ошибок на стадии компиляции. Сегодня я хочу рассказать о некоторых фичах, которые, возможно, уже знакомы вам, но точно заслуживают внимания тех, кто с ними еще не знаком. https://habr.com/ru/companies/otus/articles/833498/ 👉 @rust_lib

Rust
2 227
Понимание и реализация смарт-указателя Arc и мьютекса на Rust Rust — язык системного программирования с акцентом на безопасно
Понимание и реализация смарт-указателя Arc и мьютекса на Rust Rust  —  язык системного программирования с акцентом на безопасности, многопоточности, производительности. В этом руководстве рассмотрим два примитива многопоточности Rust: Arc и Mutex. При написании многопоточного Rust рано или поздно встречаются типы Arc и Mutex. Mutex применяется во многих языках, а вот Arc вряд ли найдется где-то еще, кроме Rust. Нельзя полностью понять эти концепции, не связав их с моделью владения Rust. Эта статья  —  мой подход к пониманию Arc и Mutex в Rust. https://towardsdev.com/understanding-and-implementing-rusts-arc-and-mutex-b54e8e3c1821 👉 @rust_lib

Rust
2 227
Рост производительности машинного обучения с Rust В этой статье я хочу поделиться своим опытом создания небольшой платформы д
Рост производительности машинного обучения с Rust В этой статье я хочу поделиться своим опытом создания небольшой платформы для машинного обучения (ML) с нуля, используя язык программирования Rust. Для моего эксперимента у меня были следующие цели: 1 - Я хотел выяснить, приведет ли переход с Python + PyTorch на Rust + LibTorch (библиотеку C++, используемую в PyTorch) к ощутимому увеличению скорости, особенно в процессе обучения модели. Как мы знаем, модели машинного обучения становятся все больше и требуют все больше вычислительных ресурсов для обучения, что иногда недоступно для обычного человека. Один из способов уменьшить требования к аппаратному обеспечению — найти способ сделать алгоритмы более вычислительно эффективными. Зная, что в PyTorch Python является лишь верхним слоем над LibTorch, мой главный вопрос заключался в том, стоит ли заменять этот верхний слой Python на Rust. План заключался в том, чтобы использовать библиотеку Tch-rs Rust для работы с тензорами и функцией автоградента из DLL LibTorch, которая будет выступать в качестве "калькулятора градиентов", а затем разработать остальную часть с нуля на Rust. 2 - Я хотел, чтобы код был достаточно простым для четкого понимания всех выполняемых операций с линейной алгеброй и позволял легко расширять его при необходимости. 3 - Насколько это возможно, моя платформа должна позволять мне определять модели машинного обучения по структуре, аналогичной стандартной Python/PyTorch. https://betterprogramming.pub/boosting-machine-learning-performance-with-rust-aab1f3ae1424 👉 @rust_lib

Rust
2 227
The Power Of RUST: введение и глубокое погружение в продвинутые концепции: Ownership, References и Borrowing. Rust использует
The Power Of RUST: введение и глубокое погружение в продвинутые концепции: Ownership, References и Borrowing. Rust используется многими крупными компаниями, такими как Mozilla, Microsoft и Dropbox, он применяется во многих случаях, для создания веб-серверов, интерфейсов командной строки, нативных настольных приложений, веб-приложений с помощью WebAssemblly, а также для операционных систем. Безопасный и многопоточный язык - это уже здорово, но максимальная производительность будет еще выше, и Rust как раз для этого, это системный язык программирования с компилятором, поэтому он не интерпретируется, как javascript, его компилятор - это ключ к производительным программам и безопасной памяти. Не только производительность, но и продуктивность Rust обусловлена наличием инструментария, такого как менеджер пакетов, тестирование и документация. https://dev.to/this-is-learning/the-power-of-rust-introduction-and-deep-dive-in-advanced-concepts-ownership-references-and-borrowing-28dh 👉 @rust_lib

Rust
2 227
Blaze: ускорение ZK для программируемой пользователем вентильной матрицы Чтобы сделать ускорение ППВМ, или программируемой по
Blaze: ускорение ZK для программируемой пользователем вентильной матрицы Чтобы сделать ускорение ППВМ, или программируемой пользователем вентильной матрицы, и графического процессора одинаково удобным для разработчиков, в Ingonyama разрабатывают решения-ускорители ППВМ для типовых примитивов ZK. С Blaze  —  библиотекой Rust для ускорения ZK на основе ППВМ компании Xilinx  —  ускорение ППВМ становится доступным для разработчиков ZK. https://medium.com/@ingonyama/introducing-blaze-zk-acceleration-for-fpga-6f5f7cc50e1f 👉 @rust_lib

Rust
2 227
Реализуем Type Inference на Rust — Часть #2: Простой Lambda Calculus Если вы пишете свой язык программирования, то вы наверно
Реализуем Type Inference на Rust — Часть #2: Простой Lambda Calculus Если вы пишете свой язык программирования, то вы наверное слышали о type inference. В этом цикле статей, без лишней теории, мы наглядно разберем как это работает и реализуем свой на Rust. https://habr.com/ru/articles/753180/ 👉 @rust_lib

Rust
2 227
Реализуем Type inference на Rust — Часть #1: Unification Если вы пишете свой язык программирования, то вы наверное слышали о
Реализуем Type inference на Rust — Часть #1: Unification Если вы пишете свой язык программирования, то вы наверное слышали о type inference. В этом цикле статей, без лишней теории, мы наглядно разберем как это работает и реализуем свой на Rust. https://habr.com/ru/articles/748978/ 👉 @rust_lib