ytdlp-gui
Это графический интерфейс для yt-dlp, написанный на Rust
Его можно легко установить в GNU/Linux и Windows системах
https://github.com/BKSalman/ytdlp-gui
👉 @rust_lib
Это графический интерфейс для yt-dlp, написанный на Rust
Его можно легко установить в GNU/Linux и Windows системах
https://github.com/BKSalman/ytdlp-gui
👉 @rust_lib
👍7👏3❤2
Просто спарсь что угодно с помощью языка Rust (ну… или просто скачай файл)
Известно, что Rust — типобезопасный язык программирования, код которого проверяется компилятором ещё до сборки. С одной стороны это хорошо: меньше вероятности внезапного сбоя в самый неподходящий момент. С другой стороны — код, выполняющий одну функцию, в итоге может стать очень сложным и иногда нечитаемым.
В пример привожу функцию, которая парсит названия валют с сайта floatrates и выводит их (пожалуйста, напишите в комментариях, за сколько минут вы поняли эту строку):
В этой статье я хочу рассказать о своей новой библиотеке, значительно упрощающей парсинг на Rust. Приятного чтения!
https://habr.com/ru/articles/755728/
👉 @rust_lib
Известно, что 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
👍13😱3🔥2🤯2
Regex engine internals as a library [full]
Дисклеймер
Это полный перевод большой и сложной статьи по внутреннему устройству крейта regex свежей версии. Перевод большей частью выполнялся для себя, чтобы поднабить скилл в английском. По возможности постарался сохранить авторский стиль.
Если всегда было интересно, как оно там под капотом устроено, а в книге Фриддла или в книге дракона вы не нашли подробностей, то добро пожаловать - будет интересно и очень сложно.
Для понимания потребуются:
🟢 Знания основ теории автоматов (знать и понимать отличия ДКА от НКА)
🟢 Иметь базовое представление о том, что такое регулярные выражения
🟢 Начальные знания по языку Rust
🟢 Общие представления отличия различных структур данных друг от друга
https://habr.com/ru/articles/755940/
original https://blog.burntsushi.net/regex-internals/
👉 @rust_lib
Дисклеймер
Это полный перевод большой и сложной статьи по внутреннему устройству крейта regex свежей версии. Перевод большей частью выполнялся для себя, чтобы поднабить скилл в английском. По возможности постарался сохранить авторский стиль.
Если всегда было интересно, как оно там под капотом устроено, а в книге Фриддла или в книге дракона вы не нашли подробностей, то добро пожаловать - будет интересно и очень сложно.
Для понимания потребуются:
https://habr.com/ru/articles/755940/
original https://blog.burntsushi.net/regex-internals/
👉 @rust_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Huey
Генерирует гифку, которая циклически перебирает все оттенки!
https://github.com/ahhhh6980/huey
👉 @rust_lib
Генерирует гифку, которая циклически перебирает все оттенки!
https://github.com/ahhhh6980/huey
👉 @rust_lib
👍4❤1🔥1
Rust.for.Network.Programming.and.Automation.pdf
1.3 MB
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
Автор: Gilbert Stew (2024)
Разработанная с учетом потребностей тех, кто интересуется сетевым программированием и автоматизацией, эта обновленная книга исследует реалистичность сетевого программирования в рамках надежной экосистемы Rust. Построенная на базе Rust 1.68, эта книга шаг за шагом проведет вас через основы сетевых протоколов, анализа пакетов и сетевого администрирования с помощью актуального и подробного материала.
👉 @rust_lib
👍9❤3🥰2👾1
Как я написал 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, и, как поступил бы на моем месте любой адекватный программист, после написания нескольких небольших программ я решил попробовать сделать что-то немного более амбициозное: я написал на Rust виртуальную машину Java. Не став сильно оригинальничать, я назвал ее просто rjvm. Вы можете найти ее код на GitHub.
Хочу подчеркнуть, что это лишь простенькая модель JVM, созданная в учебных целях, а не серьезная реализация. В частности, она не поддерживает:
https://habr.com/ru/companies/otus/articles/755946/
original https://andreabergia.com/blog/2023/07/i-have-written-a-jvm-in-rust/
👉 @rust_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3👏3
Битовые поля в Rust
В этой статье мы рассмотрим использование битовых полей в Rust и их значимость для создания оптимизированных приложений, работающих с сетевыми протоколами. Битовые поля позволяют компактно представлять данные, минимизируя использование памяти и повышая производительность.
https://habr.com/ru/companies/otus/articles/845190/
👉 @rust_lib
В этой статье мы рассмотрим использование битовых полей в Rust и их значимость для создания оптимизированных приложений, работающих с сетевыми протоколами. Битовые поля позволяют компактно представлять данные, минимизируя использование памяти и повышая производительность.
https://habr.com/ru/companies/otus/articles/845190/
👉 @rust_lib
👍8👎2❤1🥰1
Шпаргалка по Rust
Основные понятия
- Переменные и типы данных:
- По умолчанию переменные являются неизменяемыми. Для создания изменяемой переменной используйте
- Основные типы данных:
- Целые числа:
- Числа с плавающей точкой:
- Логический тип:
- Символ:
- Строки:
- Функции:
- Определение функции:
- Пример функции:
- Управляющие конструкции:
- Условия:
- Циклы:
- Цикл `loop`:
- Цикл `for`:
- Цикл `while`:
Структуры и перечисления
- Структуры:
Пример:
- Перечисления:
Пример:
Введение в владение и заимствование
- Владение: Каждый ресурс в Rust имеет единственного владельца.
- Заимствование:
- Неизменяемое заимствование:
- Изменяемое заимствование:
Обработка ошибок
- Результат:
Пример функции с обработкой ошибок:
- Паника:
- Используйте
Обобщения
- Обобщенные типы позволяют писать более универсальный код:
Работа с модулями
- Создание модуля:
- Импорт модуля:
Стандартные библиотеки
- Работа с коллекциями:
- Векторы:
- Хэш-таблицы:
Полезные команды
- Компиляция и выполнение:
- Запуск тестов:
👉 @rust_lib
Основные понятия
- Переменные и типы данных:
- По умолчанию переменные являются неизменяемыми. Для создания изменяемой переменной используйте
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
👍25❤6🔥4😁2👎1🥰1
Попробуйте Tauri
Хочу рассказать про один из моих любимых Opensource проектов: Tauri. Это среда для создания десктопно-мобильных приложений на JavaScript, но быстрых и легковесных. С опциональными дополнениями на Rust, а через него и на всех других языках.
Достоинства
Поддерживается Линь, Вынь и Дрюнь и всякое Ябло. EXEшник HelloWorld весит 1 мегабайт ( ну 5, если не ужиматься в угол как сирота в барском доме ). В памяти занимает на Win 11 200 Мб. (Из них >90% приходится на системные компоненты, расшаренные с другими программами. Поэтому простые средства измерения покажут 5 Мб). Кто-то считает, что это много. Покажите меньше. Только HelloWorld у нас будет такой: в верхней половине окна играет видео с вэба со звуком, а под ним кнопка закрыть, которая при наведении мыши начинает вращаться, и оба эти компонента рендерятся на GPU.
https://habr.com/ru/articles/850192/
👉 @rust_lib
Хочу рассказать про один из моих любимых Opensource проектов: Tauri. Это среда для создания десктопно-мобильных приложений на JavaScript, но быстрых и легковесных. С опциональными дополнениями на Rust, а через него и на всех других языках.
Достоинства
Поддерживается Линь, Вынь и Дрюнь и всякое Ябло. EXEшник HelloWorld весит 1 мегабайт ( ну 5, если не ужиматься в угол как сирота в барском доме ). В памяти занимает на Win 11 200 Мб. (Из них >90% приходится на системные компоненты, расшаренные с другими программами. Поэтому простые средства измерения покажут 5 Мб). Кто-то считает, что это много. Покажите меньше. Только HelloWorld у нас будет такой: в верхней половине окна играет видео с вэба со звуком, а под ним кнопка закрыть, которая при наведении мыши начинает вращаться, и оба эти компонента рендерятся на GPU.
https://habr.com/ru/articles/850192/
👉 @rust_lib
👍12❤1🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Pake
🤱🏻 Превратите любую веб-страницу в настольное приложение с помощью Rust.
Pake поддерживает Mac, Windows и Linux.
https://github.com/tw93/Pake
👉 @rust_lib
🤱🏻 Превратите любую веб-страницу в настольное приложение с помощью Rust.
Pake поддерживает Mac, Windows и Linux.
https://github.com/tw93/Pake
👉 @rust_lib
👍14❤3🥰1
Идиоматический код на Rust для тех, кто перешел с других языков программирования
Привет, дорогие читатели! В предыдущей моей статье "Как легко перейти с Java на Rust" я делился с вами советами по переходу на Rust и уменьшению количества "потерянной крови" на этом пути. Но что делать дальше, когда вы уже перешли на Rust, и ваш код хотя бы компилируется и работает? Сегодня я хочу поделиться с вами некоторыми идеями о том, как писать идиоматический код на Rust, особенно если вы привыкли к другим языкам программирования.
https://habr.com/ru/articles/758566/
👉 @rust_lib
Привет, дорогие читатели! В предыдущей моей статье "Как легко перейти с Java на Rust" я делился с вами советами по переходу на Rust и уменьшению количества "потерянной крови" на этом пути. Но что делать дальше, когда вы уже перешли на Rust, и ваш код хотя бы компилируется и работает? Сегодня я хочу поделиться с вами некоторыми идеями о том, как писать идиоматический код на Rust, особенно если вы привыкли к другим языкам программирования.
https://habr.com/ru/articles/758566/
👉 @rust_lib
👍7❤1🥰1👏1
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
Сегодня мы поговорим о 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
👍13🔥5❤3🥰1🌚1
Упрощенный пример на Rust обучения нейронной сети на основе Candle Framework от Hugging Face
Я недавно изучал примеры использования нейронных сетей из библиотеки Candle от Hugging Face и обратил внимание, что они довольно сложны для понимания людей, которые только начинают знакомство с нейросетями. Поэтому я решил написать максимально упрощенный пример кода на Rust, который демонстрирует обучение и использование простейшей нейросети.
https://habr.com/ru/articles/758658/
👉 @rust_lib
Я недавно изучал примеры использования нейронных сетей из библиотеки Candle от Hugging Face и обратил внимание, что они довольно сложны для понимания людей, которые только начинают знакомство с нейросетями. Поэтому я решил написать максимально упрощенный пример кода на Rust, который демонстрирует обучение и использование простейшей нейросети.
https://habr.com/ru/articles/758658/
👉 @rust_lib
👍11❤1🔥1🥰1
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
Для изучения нового языка программирования я использую следующий подход. Сначала я читаю учебник по этому языку программирования, в котором объясняются синтаксис, идиомы, философия и принципы работы языка. После этого я пишу небольшой пет-проект на этом языке программирования. На пет-проекте я немного практикуюсь с новым языком, с его стандартными библиотеками и популярными фреймворками.
Чтобы погрузиться сильнее в язык, вместо пет-проекта я начинаю писать свои библиотеки для работы с базами данных (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
🔥5👍2❤1🥰1
Разбираем выравнивание данных и структуру памяти в Rust
Мне нравится оптимизировать код — определение и исправление неэффективных участков кода приносит некое особое чувство удовлетворения в отличие от закидывания проблемы железом. Ведь последнее — пустая трата ресурсов и выбросов углерода!
В процессе моей работы я много раз оптимизировал использование памяти датафреймов Python. Не учитывая различные особенности, зачастую наиболее быстрым решением является понижающее приведение — к примеру, конвертация столбца нулей и единиц из int в bool. И хотя это срабатывает, недавно к своему удивлению я узнал, что булевы числа не всегда отображаются в качестве одиночных битов. Так как же отображаются типы данных в памяти?
Подобно тому, как аккуратно организованные стеллажи книг в библиотеке помогают легко найти нужную информацию, отображение данных в памяти может сильно повлиять на производительность и эффективность использования памяти вашего приложения.
https://habr.com/ru/companies/beget/articles/856720/
👉 @rust_lib
Мне нравится оптимизировать код — определение и исправление неэффективных участков кода приносит некое особое чувство удовлетворения в отличие от закидывания проблемы железом. Ведь последнее — пустая трата ресурсов и выбросов углерода!
В процессе моей работы я много раз оптимизировал использование памяти датафреймов Python. Не учитывая различные особенности, зачастую наиболее быстрым решением является понижающее приведение — к примеру, конвертация столбца нулей и единиц из int в bool. И хотя это срабатывает, недавно к своему удивлению я узнал, что булевы числа не всегда отображаются в качестве одиночных битов. Так как же отображаются типы данных в памяти?
Подобно тому, как аккуратно организованные стеллажи книг в библиотеке помогают легко найти нужную информацию, отображение данных в памяти может сильно повлиять на производительность и эффективность использования памяти вашего приложения.
https://habr.com/ru/companies/beget/articles/856720/
👉 @rust_lib
👍4❤1🥰1
Rust: рефакторинг для новичков
Недавно Нирадж Авинаш выложил свой код в группе по языку программирования Rust на LinkedIn. Его цель — изучить основы Rust, но я нашел его пример хорошей основой для своей статьи. Задача состоит в том, чтобы показать, как можно улучшать код на Rust поэтапно, и продемонстрировать, каких ошибок могут избегать новички, начиная с их кода. В целях упрощения, пожалуйста, не обращайте внимания на очевидные недостатки этой простой программы.
https://betterprogramming.pub/rust-refactoring-for-beginners-15a3270ce45d
👉 @rust_lib
Недавно Нирадж Авинаш выложил свой код в группе по языку программирования Rust на LinkedIn. Его цель — изучить основы Rust, но я нашел его пример хорошей основой для своей статьи. Задача состоит в том, чтобы показать, как можно улучшать код на Rust поэтапно, и продемонстрировать, каких ошибок могут избегать новички, начиная с их кода. В целях упрощения, пожалуйста, не обращайте внимания на очевидные недостатки этой простой программы.
https://betterprogramming.pub/rust-refactoring-for-beginners-15a3270ce45d
👉 @rust_lib
👍6❤2🥰1
Fuzzer Development With Rust (Basic)
Каждый исследователь должен уметь разрабатывать собственные инструменты для fuzzing (фаззинга). По этой причине я начал обучать созданию таких инструментов с нуля в рамках этого проекта, чтобы исследователи могли использовать свои фаззеры для выявления уязвимостей в области безопасности в открытых инструментах, библиотеках и коде, которые компании разрабатывают для внутреннего использования.
В этом обучении мы объяснили все концепции с примерами на языке программирования Rust, чтобы обеспечить правильное понимание необходимых понятий.
https://github.com/raminfp/fuzzer-development-with-rust
👉 @rust_lib
Каждый исследователь должен уметь разрабатывать собственные инструменты для fuzzing (фаззинга). По этой причине я начал обучать созданию таких инструментов с нуля в рамках этого проекта, чтобы исследователи могли использовать свои фаззеры для выявления уязвимостей в области безопасности в открытых инструментах, библиотеках и коде, которые компании разрабатывают для внутреннего использования.
В этом обучении мы объяснили все концепции с примерами на языке программирования Rust, чтобы обеспечить правильное понимание необходимых понятий.
https://github.com/raminfp/fuzzer-development-with-rust
👉 @rust_lib
👍6👏2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Yazi — ⚡️ Молниеносно быстрый файловый менеджер для терминала
Это файловый менеджер для терминала, написанный на Rust, основанный на неблокирующем асинхронном вводе/выводе. Он ориентирован на предоставление эффективного, удобного и настраиваемого опыта управления файлами.
• Встроенная поддержка нескольких протоколов изображений
• Полная асинхронная поддержка: все операции ввода-вывода являются асинхронными, задачи ЦП распределяются по нескольким потокам, что позволяет максимально эффективно использовать доступные ресурсы.
• Встроенная подсветка кода
• Интеграция с fd, rg, fzf, zoxy
• Vim-подобное управление
• Поддержка нескольких вкладок, предварительный просмотр с возможностью прокрутки (для видео, PDF-файлов, архивов, каталогов, кода и т. д.)
• Система тем, пользовательские макеты, корзина для мусора
и многое другое...
Совместим с GNU/Linux, Windows, macOS
https://github.com/sxyazi/yazi
👉 @rust_lib
Это файловый менеджер для терминала, написанный на Rust, основанный на неблокирующем асинхронном вводе/выводе. Он ориентирован на предоставление эффективного, удобного и настраиваемого опыта управления файлами.
• Встроенная поддержка нескольких протоколов изображений
• Полная асинхронная поддержка: все операции ввода-вывода являются асинхронными, задачи ЦП распределяются по нескольким потокам, что позволяет максимально эффективно использовать доступные ресурсы.
• Встроенная подсветка кода
• Интеграция с fd, rg, fzf, zoxy
• Vim-подобное управление
• Поддержка нескольких вкладок, предварительный просмотр с возможностью прокрутки (для видео, PDF-файлов, архивов, каталогов, кода и т. д.)
• Система тем, пользовательские макеты, корзина для мусора
и многое другое...
Совместим с GNU/Linux, Windows, macOS
https://github.com/sxyazi/yazi
👉 @rust_lib
👍17❤3🔥3🥰1👌1
Реализуем на Rust пул потоков с балансировкой нагрузки, пользуясь только стандартной библиотекой
Этот пост написан в основном под впечатлением от лекции Роба Пайка "Конкурентность – это не параллелизм".
Зачастую, пускаясь в решение задачи, полезно чётко видеть перед собой цель, которую хочешь достичь. Какая же цель стоит перед нами в данном случае? В простейшем смысле нам нужна система, которая позволяла бы:
🔹Распланировать некоторую работу так, чтобы ею занималось множество исполнителей
🔹Иметь возможность получать результаты работы, сделанной этими исполнителями
🔹Обеспечить, что исполнители достаточно загружены, но при этом не страдают от выгорания
Обратите внимание: система такого рода не привязана напрямую к компьютерам. Подобная модель вполне применима и к некоторому человеческому коллективу, которому требуется решить определённые задачи.
Как же нам смоделировать и решить эту проблему?
https://habr.com/ru/companies/timeweb/articles/761398/
👉 @rust_lib
Этот пост написан в основном под впечатлением от лекции Роба Пайка "Конкурентность – это не параллелизм".
Зачастую, пускаясь в решение задачи, полезно чётко видеть перед собой цель, которую хочешь достичь. Какая же цель стоит перед нами в данном случае? В простейшем смысле нам нужна система, которая позволяла бы:
🔹Распланировать некоторую работу так, чтобы ею занималось множество исполнителей
🔹Иметь возможность получать результаты работы, сделанной этими исполнителями
🔹Обеспечить, что исполнители достаточно загружены, но при этом не страдают от выгорания
Обратите внимание: система такого рода не привязана напрямую к компьютерам. Подобная модель вполне применима и к некоторому человеческому коллективу, которому требуется решить определённые задачи.
Как же нам смоделировать и решить эту проблему?
https://habr.com/ru/companies/timeweb/articles/761398/
👉 @rust_lib
👍12❤1👎1🔥1🥰1
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Учим Rust вместе
Hello World
Guessing Game
переменные и типы данных
функции и контроль выполнения программы
разбор задач
владение
заимствование и слайсы
структуры и методы
перечислимые типы
пакеты и модули
вектор
строки
HashMap
разбор задачи
обработка ошибок
дженерики
трейты
https://www.youtube.com/playlist?list=PLXhUgKrQD6UoggzaDTQ1luq3XMpYboMTM
👉 @rust_lib
Hello World
Guessing Game
переменные и типы данных
функции и контроль выполнения программы
разбор задач
владение
заимствование и слайсы
структуры и методы
перечислимые типы
пакеты и модули
вектор
строки
HashMap
разбор задачи
обработка ошибок
дженерики
трейты
https://www.youtube.com/playlist?list=PLXhUgKrQD6UoggzaDTQ1luq3XMpYboMTM
👉 @rust_lib
👍16🔥4❤3🥰1