TGViewer
Channel Public Channel
Rust

Rust

@rust_code

Rust programming language

По всем вопросам- @workakkk

#VRHSZ
Subscribers
8.92K
Photos
540
Videos
46
Links
1.1K

Showing posts older than #341 · Back to latest

Older Posts 20 shown
Post #338 3.2K
Yazi — молниеносный терминальный файловый менеджер, написанный на Rust.

• Встроенная поддержка нескольких протоколов изображений
• Полная асинхронная поддержка: все операции ввода-вывода являются асинхронными, задачи ЦП распределяются по нескольким потокам, что позволяет максимально эффективно использовать доступные ресурсы.
• Встроенная подсветка кода
• Интеграция с fd, rg, fzf, zoxy
• Vim-подобное управление
• Поддержка нескольких вкладок, предварительный просмотр с возможностью прокрутки (для видео, PDF-файлов, архивов, каталогов, кода и т. д.)
• Система тем, пользовательские макеты, корзина для мусора
и многое другое...

Совместим с GNU/Linux, Windows, macOS

• Github

@rust_code
  • ⚡ 22
  • 🔥 9
  • ❤ 5
  • 👍 5
Post #337 2.35K
Post #336 2.47K
👣 Fuzzer Development With Rust (Basic)

Каждому исследователю необходимо уметь разрабатывать собственные инструменты для фаззинга. В этом репозитории материалы для разработки средств фаззинга с нуля, чтобы исследователи могли использовать собственные фаззеры для обнаружения уязвимостей в открытых инструментах, библиотеках и коде, разрабатываемом внутри компаний.

• Github

@rust_code
GitHub GitHub - raminfp/fuzzer-development-with-rust: Write fuzzer with rust Write fuzzer with rust. Contribute to raminfp/fuzzer-development-with-rust development by creating an account on GitHub.
  • 👍 12
  • 🔥 2
  • ❤ 1
Post #335 2.97K
Post #333 2.62K
🎥 Rust: рефакторинг для новичков

📌 Отсутствие идиом Rust
Опытным программистам Rust режет глаз тот факт, что следующая функция возвращает кортеж, а не Result<>:

fn add_student() -> (Student, bool)

Данный подход не только не является идиоматическим, но и вводит в заблуждение читателя кода. Непонятно, что подразумевает логическое значение bool. В ответ на вывод этой функции придется написать что-то сложное, как показано ниже:

// Добавление студента на курс
let (st, err) = add_student();

// Проверка наличия ошибки. В случае ошибки продолжить цикл
if !err {
continue;
}


Получается 5 строк с комментариями, объясняющими код. Это считается плохой практикой, так же как и короткие имена переменных.

📌 Рефакторинг
Сначала проведем рефакторинг этих фрагментов. То, что было:

fn add_student() -> (Student, bool) {
// ...
let mut st = Student {
name: "".to_string(),
age: 0,
};
// ...
if student_name.len() < 3 {
// ...
return (st, false);
}
// ...
(st, true)
}


преобразуем в более идиоматический и читаемый вариант:

fn add_student() -> Result<Student, &'static str> {
// ...
if student_name.len() < 3 {
// ...
return Err("Student's name too short");
}
// ...
let age = age.parse.map_err(|_| "Cannot parse student's age")?;

Ok(Student {
name: student_name,
age
})
}


Понятно, что возврат статических строк в качестве ошибок не относится к разряду привычных практик, но вполне подойдет для данного примера.

◾️Метод .map_err() позволяет преобразовать экземпляр типа, содержащийся в значении перечисления Err(e), в такой, который поддерживается функцией.

В этом случае объявленным типом является &'static str (эквивалент Rust для идиомы типа const char* в С), чем объясняется совпадение текстов в кавычках. Оператор ?  — одна из лучших функциональностей Rust. Он проверяет стоящий перед ним экземпляр Result<>. Если значение равно Err(e), возвращает результат, в противном случае продолжает работу. В старом коде встречался макрос try!().

В итоге проверка ожидаемого вывода функции выглядит так:

let student = if let Ok(student) = add_student() {
student
} else {
continue;
}

student_db.push(student.clone());


Это неидеальное условие, поскольку оно фактически исключает любую ошибку. Действуя таким образом, мы исходим из предположения допустимости такого подхода, но предусматриваем обработку перечисления Err(e) на индивидуальной основе.

📌 Ошибка новичков: бесконечный цикл

Читать

@rust_code
  • 👍 17
  • ❤ 5
  • 👎 4
Post #332 2.48K
🔥 Дайджест полезных материалов из мира : Rust за неделю

Почитать:
— Можно ли доверить компилятору оптимизацию вашего кода?
— Упрощенный пример на Rust обучения нейронной сети на основе Candle Framework от Hugging Face
— 9 лучших консольных файловых менеджеров Linux
— Идиоматический код на Rust для тех, кто перешел с других языков программирования
— Introducing PassMeRust: Advanced Password Strength Calculator in Rust
— Learning Rust 🦀: 13 - Pattern matching basics
— Fetching Bitcoin Mempool Data from the Terminal
— GreptimeDB Quickstart Guide - Seamlessly Launch Our Time-Series Database from the Ground Up
— Rust, Go, Rinha e I/O
— 🚀 Discover the Rust Revolution for Shell Scripts with Mush 🚀
— Why Rust Is the Optimal Choice for Deep Learning, and How to Start Your Journey with the Burn Deep Learning Framework
— ESP32 Standard Library Embedded Rust: GPIO Interrupts
— Moving from Typescript and Langchain to Rust and Loops
— 🚀 Mastering Integration Testing in Rust with Testcontainers 🧪

Посмотреть:
🌐 HTMX заменит Frontend?! WTF? (⏱ 12:12)
🌐 5+ CSS Features That Will Change How You Code (⏱ 17:58)
🌐 NEW Way To Create Variables In JavaScript (⏱ 01:00)

Хорошего дня!

@rust_code
  • 👍 11
  • 🔥 4
  • ❤ 2
Post #330 2.36K
Post #329 2.88K
Упрощенный пример на Rust обучения нейронной сети на основе Candle Framework от Hugging Face
https://habr.com/ru/articles/758658/
  • 👍 13
  • 🤔 2
Post #328 2.61K
Идиоматический код на Rust для тех, кто перешел с других языков программирования
https://habr.com/ru/articles/758566/
  • 👍 10
  • 🔥 6
  • 🤮 2
Post #327 2.36K
Post #326 2.03K
👣 php-tokio 🖥

Эта библиотека позволяет асинхронно использовать любую библиотеку async rust из PHP.

▪Github

@rust_code
  • 💩 25
  • 👍 4
  • 🔥 3
  • 😨 3
  • 🤣 2
Post #325 2.42K
Post #324 2.75K
🎙 Pake — это инструмент на Rust, который позволяет преобразовывать веб-страницы в приложения.

✔️ Поддерживает операционные системы Mac, Windows и GNU/Linux.

✔️ Значительно компактнее, чем Electron, и работает быстрее, чем фреймворки, основанные на JavaScript.

✔️ Уже имеет множество популярных пакетов, таких как WeRead, Twitter, ChatGPT и YouTube Music. Пользователи могут легко навигировать по приложению с помощью сочетаний клавиш.

✔️ Pake можно настроить через командную строку и изменение структуры кодовой базы.

▪Github

@rust_code
  • 👍 20
  • 🔥 5
  • ❤ 2
Post #321 1.77K
Rust 1.72.0: потенциально полезные отключенные элементы, неограниченные константные вычисления
https://habr.com/ru/articles/757158/
  • 👍 15
  • 🔥 2
  • ❤ 1
Post #320 1.81K
Post #319 1.87K
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →