Rust - Советы, библиотеки, гайды – Telegram
Rust - Советы, библиотеки, гайды
2.35K subscribers
112 photos
2 videos
49 links
Привет! 🦀
У нас тут всё проржавело, но думаю ты найдешь кое-что интересное для себя ✌️

use {Готовый код, советы, лайфхаки, годные библиотеки, уроки и многое другое};

let 😎 Наша предложка - @hhsharebot;
let 🤟 Автор - Абрахам (@priler);
Download Telegram
Коротко о зарплатах Rust программистов.
1🌚39🔥6👍42
Опубликовал на crates.io свой первый крейт 🦀

📦 rust-censure — это порт библиотеки py-censure с питона на раст
Поддерживает два языка: русский и английский.
Будет полезно, например, для авто-модерации чатов.


В плане оптимизации крейт делает две вещи:
— Использует regex для обычных регулярок и fancy-regex для более тяжелых (через фолбэк)
— Компилирует и кэширует регулярки по запросу

Это пока еще можно сказать бета версия, но она уже должна нормально работать.
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍195🔥5😁2
Ладно я добавил Readme.
Так уж и быть пхпхпх 🧢
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍28🔥5😁52
Кстати, написал для своей библиотеки парочку бенчмарков на Criterion.
А потом схожие на Python.

Оказалось, что 📦 rust-censure работает примерно на 900% быстрее оригинала.
Конечно это за счет языка, компиляции и мощнейшей библиотеке regex.

Сложность правда O(m * n) на выполнение и O(1) на память, но во-первых m статично, а n чаще всего это мелкие сообщения в чатах.
Так что не критично.

В будущем добавлю сюда алгоритм Ахо-Корасик для еще более быстрой обработки.
В расте есть даже готовая либа :3
1👍28🔥71🥰1
godot-rust — это проект позволяющий разрабатывать игры на Godot, а код писать на Rust.

Причем один из разработчиков, — программист в команде Godot.
Хотя сам язык Rust официально не поддерживается Godot.

Godot-Rust в разработке с 2023 года.
У него 4 тыс. звёзд на ГХ.
А крайняя версия 0.4 вышла буквально в прошлом месяце.

Может это шанс для 🦀 Rust получить первый адекватный игровой движок.

#крейты
Please open Telegram to view this post
VIEW IN TELEGRAM
131👍9🔥4🥰1
📦 rust-censure уже 500+ скачиваний лол.
Это мой первый опыт в размещении на Crates.

Поэтому делюсь им с вами.
Вчера зарелизил версию 0.2.0, и сам не заметил как поломал SemVer (согласно ему должна была быть версия 1.0.0).
Поэтому быстренько восстановил обратную совместимость и зарелизил 0.2.1.
SemVer так разрешает, это буквально написано у них в FAQ.

Ранее я уже много раз выпускал всевозможные библиотеки: на JS, на PHP, на Python.
Но я никогда не юзал SemVer, чаще писал версии от балды.
Штош, в мире SemVer разработчиков пополнение 😎

В версии ^0.2.0 кстати:
— Я исправил реализацию трейта LangProvider
— Добавил новый конструктор для Censor
— Чуть оптимизировал код


Ждите в ближайшее время посты про интересные крейты 🧢
Please open Telegram to view this post
VIEW IN TELEGRAM
119👍10🔥1🥰1
Вчера пытался завести модель по определению спама из нашего Python бота на 🦀 Rust.

Мучался час с крейтом Candle.
В итоге свичнулся на rust_bert.

Архитектура модели — DebertaForSequenceClassification.

Кто бы мог подумать, но в коде прямо так и пишем:
use rust_bert::deberta::{DebertaConfig, DebertaForSequenceClassification};


Спрашивал у нейронки, она мне советовала сохранять модель в .ot формате.
Хрен там плавал, Rust прекрасно работает с .safetensors.

Единственное пришлось править config.json.
А именно добавить поле id2label и убрать какое-то, у которого было значение null.

Но в итоге оно не компилировалось.
А всё потому что есть два разных токенайзера: rust_tokenizers и новый HF tokenizers.

И если вы ставите второй от HF, то он конфликтует с линкером MSVC.
Точнее конфликтует метод сборки каких-то модулей libtorch, если я верно понял.
Короче говоря ставим его вот так:
tokenizers = { version = "0.22.1", default-features = false, features = ["onig"] }


Иначе код тупо не компилится.
С чем это связано я так и не понял.
Что-то там со статическими/динамически скомпилированными библиотеками, и что линковщик отказывается их совмещать.
Иш, какой придирчивый ...

Крч заработало в итоге.
Нейросеть теперь отлично работает под 🦀 Rust :]
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥22👍62🤯2😁1
parking_lot — это альтернативная имплементация Mutex, RwLock, Condvar и Once.
Они тут меньше, быстрее и лучше.

По уверениям разработчиков, тесты на x86_64 Linux показали, что Mutex в 1.5x раз быстрее, чем стандартный std::sync::Mutex.

Судя кол-ву. скачиваний, этот крейт уже давно стал стандартом вместо STD раста 🦀

UPD: А еще в нем есть такая штука как ReentrantMutex, позволяющая одному и тому же потоку множество раз получать замок, избегая взаимного дедлока.

#крейты
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥52🌚2🥰1
Ну тут даже я в шоке 🚬
Please open Telegram to view this post
VIEW IN TELEGRAM
😁45🤯9🌚4🤡1
Очередной плюсик в корзинку 🦀 Rust

Это вам не JS у которого node_modules весит по 100 гб
Please open Telegram to view this post
VIEW IN TELEGRAM
35👍9🔥3🥰1🤔1
Кстати недавно весь интернет упал из-за вот этой одной строчки Rust кода.

Cloudflare переписали часть функций на Rust, и тупо заюзали в коде .unwrap().
Без каких-либо проверок, напрямую 🤲.

Как результат — код запаниковал и сервер упал.
Пам пам 🧢
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯357😁6
Разбираем ситуацию с Cloudflare и почему всего одна строчка Rust кода буквально положила почти весь интернет? 🚬

▶️ https://www.youtube.com/watch?v=_aJqpzwslA4
Please open Telegram to view this post
VIEW IN TELEGRAM
💯181🤯1
Rust программисты в схеме устройства интернета 🧢
Please open Telegram to view this post
VIEW IN TELEGRAM
💯26🔥3👍21🥰1
Новый логотип Раста после того как он положил половину интернета 😂
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰42😁176🔥3💯3
Как же я вчера замучался с LTCG в C++ 😳
Пытался скомпилить проектик один (большой), и там шаг влево/шаг право - Internal linker error.

В этот момент я понял, что LTO в 🦀 Rust в разы более классный.
И вообще раст топ. Пишите на раст.

(это не игра если чё)

UPD: Да речь про MSVC LTCG, и да я уже понял что в плюсах это г@вно.
В Rust всё просто работает, там из коробки LTO LLVM.
Если кому интересно чё я делал, - добавлял shared_mutex в код.
Please open Telegram to view this post
VIEW IN TELEGRAM
22🥰4💯4😁2👍1
Интересные ошибки у компилятора Rust 🚬
Please open Telegram to view this post
VIEW IN TELEGRAM
😁39🤯6🙏4🤡3🔥1
Чейта я давно не постил крейты ...

winrt-notifications — это крейт для лёгкого отображения уведомлений на Windows 10, 8.1 и (возможно) 8.
Код очень простой и по сути это удобная обёртка над WinRT Toast API.

Единственный минус — крейт заброшенный.

#крейты
👍17🔥1🥰1
У Rust есть наследование, вообще-то 🚬
А именно через трейты и имплементации.
Please open Telegram to view this post
VIEW IN TELEGRAM
18👍2🥰1