Веб-версияОткрыть в Telegram
RRust

Rust

@rust_lib · канал · Технологии · в индексе с 2026-07-11
2 242подписчиков
820средний охват поста
2постов за 30 дней
352постов в индексе
R
Rust
Фотография
нажмите — покажем
Создание ИИ-продуктов в Lovable: от идеи до рабочего мини-MVP. Бесплатный урок курса «Вайб-кодинг: создание цифровых продуктов с ИИ» Идею продукта больше не обязательно месяцами передавать от продакта к дизайнеру, потом к разработчику, потом обратно на доработку. Новые ИИ-инструменты позволяют быстрее собрать рабочий прототип, проверить сценарий и понять, есть ли у идеи потенциал. Но скорость работает только тогда, когда у вас есть структура: что должно быть на экранах, какая логика нужна пользователю и как связать всё в единый продуктовый путь. На открытом уроке 14 июля в 20:00 разберём, как создавать ИИ-продукты и мини-MVP в Lovable без классической разработки. Поговорим о том, что такое вайб-кодинг, как устроен интерфейс Lovable и как формулировать задачи так, чтобы получать не просто красивые макеты, а рабочие пользовательские сценарии. На практике посмотрим, как собрать мини-MVP: интерфейсы, логику экранов, структуру продукта и путь пользователя. Отдельно обсудим, как дорабатывать продукт через итерации запросов, улучшать пользовательский опыт без дизайнера и разработчика клиентской части, а также какие ошибки чаще всего ломают результат: перегруженные промпты, отсутствие структуры и потеря логики между экранами. Урок не для тех, кто хочет «сделать продукт одной кнопкой», не готов думать о сценариях пользователя и считает, что рабочий прототип — это просто набор красивых экранов. 👉 Записаться: https://vk.cc/cZnapP Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
1 · 1.4K ·
R
Rust
Видео
pake.mp4 · 1.2 МБ · нажмите — покажем
Pake 🤱🏻 Превратите любую веб-страницу в настольное приложение с помощью Rust. Особенности: -Упаковка сайта в exe/dmg/appimage без лишних зависимостей. -Основан на Tauri — быстрый, лёгкий, с низким потреблением памяти. -Поддержка кастомных иконок, заголовков окна, горячих клавиш. -Безопаснее, чем Electron, так как вес приложения в разы меньше и нет лишнего Node.js-кода. -Работает на Windows, macOS и Linux. https://github.com/tw93/Pake 👉 @rust_lib
31 · 1.3K ·
Rust
Фотография
нажмите — покажем
Redox - это операционная система, написанная полностью на Rust. Проект вдохновлён принципами Unix, но стремится к более безопасной и современной архитектуре. В Redox используются микроядерный подход, драйверы и сервисы запускаются в пространстве пользователя, что уменьшает поверхность атак и повышает стабильность. Кроме ядра, экосистема включает файловую систему TFS, собственный дисплейный сервер Orbital и набор утилит. Разработчики делают упор на безопасные абстракции Rust и минимизацию использования небезопасного кода. https://gitlab.redox-os.org/redox-os/redox 👉 @rust_lib
22 · 1.1K ·
R
Фотография
нажмите — покажем
Разработка ИИ-приложений с Claude Code. Бесплатный урок курса «Вайб-кодинг: создание цифровых продуктов с ИИ» Claude Code помогает быстрее писать, анализировать и дорабатывать код. Но ценность такого инструмента раскрывается не тогда, когда вы просите «сделай приложение», а когда умеете дробить задачу, задавать контекст, контролировать архитектуру и вести разработку пошагово. Иначе вместо ускорения получится набор кусков кода, которые трудно проверить и связать в рабочий продукт. На открытом уроке 21 июля в 20:00 разберём, как использовать Claude Code для практической разработки ИИ-продуктов и сервисов. Посмотрим, как с его помощью создавать Telegram-ботов, ИИ-агентов и внутренние сервисы, генерировать серверную логику, программные интерфейсы, интеграции и автоматизации через текстовые запросы. Отдельно обсудим подходы к работе с большими проектами: структуру промптов, контекст, пошаговую разработку и проверку результата. Также покажем, как применять Claude Code для доработки кода, поиска ошибок и ускорения разработки. Урок поможет понять, как выстроить процесс вайб-кодинга при создании реальных цифровых продуктов, а не просто генерировать отдельные фрагменты. Урок не для тех, кто хочет заменить инженерное мышление одним запросом, не готов проверять результат и считает, что ИИ сам соберёт качественный продукт без постановки задачи, контекста и контроля. 👉 Записаться: https://vk.cc/cZzmCl Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
1 · 1.3K ·
R
Rust
Фотография
нажмите — покажем
Неожиданный скачок продуктивности благодаря Rust Бэкенд платформы Lubeno полностью написан на Rust. Он вырос до таких размеров, что я уже не могу удерживать все части его кодовой базы в голове. По моему опыту, на этом этапе проекты обычно сталкиваются со значительным замедлением. Становится сложно обеспечивать отсутствие непредусмотренных последствий от внесения изменений. Выяснилось, что благодаря гарантиям безопасности Rust я гораздо увереннее работаю с кодовой базой. И эта уверенность позволяет мне рефакторить даже критичные части приложения, что крайне положительно влияет на мою продуктивность и удобство поддержки продукта в долгосрочной перспективе. https://habr.com/ru/articles/944706/ original https://lubeno.dev/blog/rusts-productivity-curve 👉 @rust_lib
15 · 1.5K ·
R
Rust
Фотография
нажмите — покажем
Plotlars - это многофункциональная библиотека на Rust, которая выступает в роли обёртки вокруг библиотеки Plotly, соединяя мощную библиотеку анализа данных Polars с Plotly. Она упрощает процесс создания визуализаций из датафреймов, позволяя разработчикам сосредоточиться на анализе данных, а не на тонкостях построения графиков. https://github.com/alceal/plotlars 👉 @rust_lib
14 · 1.4K ·
R
Rust
Ссылка
нажмите — покажем
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин https://max.ru/channel_win_sysadmin Системный Администратор Windows https://max.ru/channel_linux_admin Linux: Системный администратор https://max.ru/channel_linuxmod Linux https://max.ru/channel_i_linux Системный администратор https://max.ru/channel_devopslib DevOps, SRE, Sysadmin https://max.ru/channel_devops_star DevOps Star (Звезда Девопса) Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак Английский с нуля 🇬🇧 https://max.ru/UchuEnglish 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С https://max.ru/channel_DevLab1C 1С:Предприятие 8 Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика https://max.ru/channel_cpp_geek C++ geek Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Rust📌 https://max.ru/channel_rust_lib Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика https://max.ru/channel_java_geek Java Geek GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоур
2 · 1.3K ·
R
Rust
Фотография
нажмите — покажем
Эмулятор Game Boy, написанный на Rust 🎮 Проект rust-gb — это реализация классического Game Boy на чистом Rust. Поддерживает CPU, память, видеосистему и даже звук. Автор ставил цель добиться максимальной точности эмуляции, сохранив при этом производительность и читаемость кода. Отличный пример того, как можно использовать безопасные абстракции Rust для низкоуровневых задач вроде обработки инструкций CPU и таймингов видеоконтроллера. Репозиторий содержит понятную структуру кода и тесты, что делает его отличным материалом для изучения архитектуры эмуляторов. https://github.com/zlfn/rust-gb 📲 Мы в MAX 👉 @rust_lib
12 · 1.3K ·
R
Rust
Фотография
нажмите — покажем
Wgpu - это безопасная и переносимая графическая библиотека для Rust, основанная на API WebGPU. Она подходит для универсальной графики и вычислений на GPU. Приложения, использующие wgpu, могут работать нативно на Vulkan, Metal, DirectX 12 и OpenGL ES, а также в браузерах через WebAssembly на WebGPU и WebGL2. https://wgpu.rs/ https://github.com/gfx-rs/wgpu 📲 Мы в MAX 👉 @rust_lib
14 · 1.3K ·
R
Rust
Фотография
нажмите — покажем
Пишем простой калькулятор используя фреймворк eframe (egui) Всем здравствуйте. Ниже будет приведен пример написания PWA приложения готового для использования как в браузере, так и на компьютере с ОС Windows. Использовать будем язык программирования Rust и фреймворк eframe (egui). Готовое приложение будет доступно как исполняемый файл для ОС Windows, и как файл Webassembly. В процессе работы мы будем использовать GitHub Action для отслеживания корректности написания нашего кода и сборки исполняемых файлов программы, а также для развертывания (версию программы с использованием Webassembly) как страницы в интернете (GitHub Pages). https://habr.com/ru/articles/722438/ 📲 Мы в MAX 👉 @rust_lib
17 · 1.1K ·
R
Rust
Фотография
нажмите — покажем
Pico Pico - Embedded Programming with Rust В этой книге используется Raspberry Pi Pico 2 (на базе чипа RP2350), программируемый на Rust. Рассмотрены разнообразные проекты - например, затухание светодиода, управление сервоприводом, измерение расстояния ультразвуковым датчиком, отображение изображения Ferris на OLED-дисплее, работа с RFID-ридером, проигрывание мелодий на зуммере, автоматическое включение светодиода при отсутствии света в комнате, измерение температуры и многое другое. https://pico.implrust.com/index.html 📲 Мы в MAX 👉 @rust_lib
32 · 1.1K ·
R
Rust
Ссылка
нажмите — покажем
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин https://max.ru/channel_win_sysadmin Системный Администратор Windows https://max.ru/channel_linux_admin Linux: Системный администратор https://max.ru/channel_linuxmod Linux https://max.ru/channel_i_linux Системный администратор https://max.ru/channel_devopslib DevOps, SRE, Sysadmin https://max.ru/channel_devops_star DevOps Star (Звезда Девопса) Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак Английский с нуля 🇬🇧 https://max.ru/UchuEnglish 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С https://max.ru/channel_DevLab1C 1С:Предприятие 8 Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика https://max.ru/channel_cpp_geek C++ geek Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Rust📌 https://max.ru/channel_rust_lib Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика https://max.ru/channel_java_geek Java Geek GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоур
2 · 1.1K ·
R
Rust
Фотография
нажмите — покажем
Пишем калькулятор на Rust с GUI Зачем еще один калькулятор? Да не зачем, просто как тестовый проект для рассмотрения GUI-библиотеки. Изначально я хотел попробовать такие крейты, как GPUI, Floem и Xilem, но первая, кажется, пока работает только под MacOS и Linux, вторая не позволяет установить иконку окну и кушает оперативы побольше Webview в Tauri, а до третьей я так и не добрался, узнав об Slint. Об Slint есть всего несколько новостных постов на Хабре, поэтому, возможно, вам будет интересно посмотреть, что это такое. https://habr.com/ru/articles/804655/ 📲 Мы в MAX 👉 @rust_lib
21 · 1.3K ·
R
Rust
Видео
ghostport_demo.mp4 · 1.0 МБ · нажмите — покажем
Ghostport Высокопроизводительный инструмент для подмены портов, написанный на Rust. Сбивайте с толку порт-сканеры с помощью динамической эмуляции сервисов на всех портах. Поддерживает настраиваемые сигнатуры, эффективную асинхронную обработку и простое перенаправление трафика. Особенности - Динамическая эмуляция портов: отвечает на порт-сканирование набором правдоподобных сигнатур сервисов. - Настраиваемые сигнатуры: легко добавлять или изменять сигнатуры сервисов через простой текстовый файл. - Высокая производительность: построен на Rust и Tokio для эффективной асинхронной обработки соединений. - Гибкое логирование: режимы debug, verbose и quiet для разных сценариев использования. - Простота использования: простой интерфейс командной строки с разумными настройками по умолчанию. https://github.com/vxfemboy/ghostport 📲 Мы в MAX 👉 @rust_lib
18 · 1K ·
R
Rust
Видео
Rust_Programming_Full_Course_Learn_⚙️_in_2024_#rustprogrammi · 468.3 МБ · нажмите — покажем
Добро пожаловать на «Полный курс Rust»! (2024) (Eng ver.) Этот обширный курс разработан, чтобы превратить вас из новичка в опытного программиста Rust, охватывая все основные темы, необходимые для создания надежного и эффективного программного обеспечения. В этом курсе вы начнете структурированный процесс обучения, который включает: Chapter 0 Introduction to Rust 00:00 Chapter 0 Install Rust 08:05 Chapter 0 Write first Rust program 09:26 Chapter 0 Cargo package manager 12:36 Chapter 1 Primitive Data Types 15:53 Chapter 2 Compound Data Types 25:12 Chapter 3 Functions 46:40 Chapter 4 Ownership 01:06:27 Chapter 5 Borrowing, and References 01:15:22 Chapter 6 Variables and Mutability 01:27:16 Chapter 7 Constants 01:31:05 Chapter 8 Shadowing 01:38:00 Chapter 9 Comments 01:46:49 Chapter 10 Introduction to Control Flow 01:49:33 Chapter 11 Looping Mechanisms 01:58:29 Chapter 12 Defining Structs 02:09:25 Chapter 13 Introduction to Enums 02:21:13 Chapter 14 Error Handling Techniques 02:33:07 Chapter 15 Collection Types 02:41:25 источник 📲 Мы в MAX 👉 @rust_lib
40 · 994 ·
R
Rust
🦀 Error Handling: Библиотеки против Приложений Часто вижу в код-ревью кашу из способов обработки ошибок. Давайте раз и навсегда зафиксируем базу, чтобы ваш код был идиоматичным. Есть два лагеря, и вам нужно быть в обоих, но в разное время: 1. Вы пишите Библиотеку? Используйте thiserror. Почему: Вашим пользователям важно матчить ошибки. Им нужно знать, что именно пошло не так (NetworkError, ParseError), чтобы программно на это отреагировать. Вы не должны навязывать им тяжелые трейты. #[derive(thiserror::Error, Debug)] pub enum MyLibError { #[error("IO error: {0}")] Io(#[from] std::io::Error), #[error("Invalid header")] InvalidHeader, } 2. Вы пишите Приложение (CLI, Backend)? Используйте anyhow. Почему: Вам чаще всего плевать на тип ошибки в глубине стека, вам важно прокинуть её наверх (main), залоггировать контекст и упасть (или отдать 500-ку). use anyhow::{Context, Result}; fn main() -> Result<()> { let config = std::fs::read_to_string("config.toml") .context("Не удалось прочитать конфиг")?; Ok(()) } Итог: В библиотеках даем структуру (thiserror), в приложениях собираем контекст (anyhow). Не смешивайте. #rust #tips #error_handling 📲 Мы в MAX 👉 @rust_lib
18 · 1.1K ·
R
Rust
Видео
pake.mp4 · 1.2 МБ · нажмите — покажем
Pake 🤱🏻 Превратите любую веб-страницу в настольное приложение с помощью Rust. Pake поддерживает Mac, Windows и Linux. https://github.com/tw93/Pake 📲 Мы в MAX 👉 @rust_lib
15 · 966 ·
R
Rust
Ссылка
нажмите — покажем
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин https://max.ru/channel_win_sysadmin Системный Администратор Windows https://max.ru/channel_linux_admin Linux: Системный администратор https://max.ru/channel_linuxmod Linux https://max.ru/channel_i_linux Системный администратор https://max.ru/channel_devopslib DevOps, SRE, Sysadmin https://max.ru/channel_devops_star DevOps Star (Звезда Девопса) Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак Английский с нуля 🇬🇧 https://max.ru/UchuEnglish 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С https://max.ru/channel_DevLab1C 1С:Предприятие 8 Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика https://max.ru/channel_cpp_geek C++ geek Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Rust📌 https://max.ru/channel_rust_lib Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика https://max.ru/channel_java_geek Java Geek GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоур
961 ·
R
Rust
👻 Сила пустоты: Zero-Sized Types (ZST) Мы часто говорим про "zero-cost abstractions", но редко задумываемся, как это выглядит в памяти. ZST - это типы, которые занимают 0 байт. Компилятор знает о них, но в рантайме они исчезают. Зачем это нужно, кроме экономии памяти? Для управления состоянием на уровне типов. Представьте, что у вас есть стейт-машина. Вместо того чтобы хранить enum State и делать проверки в рантайме: struct Socket<State> { inner: FileDesc, _marker: PhantomData<State>, // 0 байт } // ZST-маркеры struct Connected; struct Disconnected; impl Socket<Disconnected> { fn connect(self) -> Socket<Connected> { // Логика подключения... // Трансформация типа без оверхеда в памяти unsafe { std::mem::transmute(self) } } } impl Socket<Connected> { fn send(&self, data: &[u8]) { ... } } В чем профит? 1. Вы физически не можете вызвать метод send у Disconnected сокета. Код просто не скомпилируется. 2. В скомпилированном бинарнике нет никаких флагов состояния, if state == connected и прочего мусора. Метод просто вызывается. Используйте систему типов, чтобы делать некорректные состояния невыразимыми (Make invalid states unrepresentable). #rust #advanced #architecture #zst 📲 Мы в MAX 👉 @rust_lib
10 · 845 ·
Rust
🛠 Cargo Expand: Загляни под капот макросам Признайтесь, у вас бывало такое: навесили #[derive(Serialize)] или сложный макрос из sqlx, получили странную ошибку компиляции и сидите в ступоре? Макросы это круто, но это черный ящик. Чтобы превратить его в прозрачный, поставьте cargo-expand. cargo install cargo-expand Запускаем: cargo expand И видите весь тот ужас (или красоту), который генерируется до того, как код попадет к компилятору. Это маст-хэв тулза при отладке async трейтов (привет, async-trait крейт) и понимании того, как работает "магия" фреймворков типа Actix или Rocket. P.S. Только не пугайтесь, когда увидите, во что разворачивается println!. #rust #tools #cargo #macro 📲 Мы в MAX 👉 @rust_lib
12 · 832 ·
R
Фотография
нажмите — покажем
Владение, заимствование и ссылки в Rust: как компилятор делает ваш код безопасным В Rust одна из самых непривычных для разработчиков тем — это ownership (владение) и borrowing (заимствование). Многие пытаются писать на Rust как на C++ или Python, натыкаются на компилятор, и правила borrow checker'а поначалу кажутся слишком строгими. На деле компилятор просто защищает вас от ошибок, которые в других языках приводят к падениям, утечкам памяти и гонкам данных. Но чтобы подружиться с borrow checker’ом, нужно понять логику, а не заучивать правила. На открытом вебинаре 9 сентября в 20:00 разберём фундаментальные концепции Rust, которые делают код безопасным без сборщика мусора. Поговорим о том, почему на одни и те же данные можно взять сколько угодно иммутабельных ссылок (&), но мутабельная (&mut) может быть только одна — и не одновременно с иммутабельными. Разберём, чем перемещение (move) отличается от копирования (Copy/Clone). Обсудим, что такое время жизни (lifetimes): когда его нужно указывать явно, а когда компилятор выводит его сам по правилам элизии (lifetime elision). На практических примерах посмотрим, как разбирать типичные ошибки borrow checker'а, писать функции, безопасно работающие со ссылками и слайсами, и почему правила владения и заимствования предотвращают гонки данных, обращение к освобождённой памяти и двойное освобождение. Вебинар не для тех, кто хочет просто «посмотреть синтаксис» без погружения в модель памяти. Подойдёт тем, кто уже знаком с основами языка — переменными, функциями, типами — и хочет наконец разобраться в модели памяти Rust, а также программистам с опытом в C++, Java или Python, которые хотят понять самую важную и необычную концепцию языка. 👉 Записаться: https://vk.cc/d1fh5M Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
2 · 1K ·
R
Rust
🐮 Cow: Ленивое клонирование Все знают: лишний clone() - это грех. Но иногда нам нужно вернуть строку, которая может быть изменена, а может и нет. Допустим, мы чистим инпут от спецсимволов. 1. Если спецсимволов нет - зачем аллоцировать новую строку? Можно вернуть ссылку на исходную. 2. Если есть - придется создать новую String. Здесь на сцену выходит std::borrow::Cow (Clone on Write). use std::borrow::Cow; fn sanitize(input: &str) -> Cow<str> { if input.contains('!') { // Аллокация происходит только тут Cow::Owned(input.replace('!', "?")) } else { // Тут мы просто возвращаем ссылку. Zero allocation. Cow::Borrowed(input) } } Это мощнейший инструмент для хот-пасов (hot paths), где 90% данных не требуют изменений. Не ленитесь использовать Cow там, где можно избежать лишних аллокаций. #rust #performance #std 📲 Мы в MAX 👉 @rust_lib
16 · 917 ·
R
Rust
🤠 Трюк Индианы Джонса: std::mem::take Типичная ситуация: у вас есть &mut self, и вы хотите забрать поле (например, String или Vec), что-то с ним сделать, и, возможно, вернуть обратно или сохранить измененную версию. Компилятор бьет по рукам: нельзя просто так переместить (move) значение из-за мутабельной ссылки. Новички часто делают .clone(), чтобы успокоить borrow checker. Но это лишняя аллокация! Решение: std::mem::take. Оно забирает значение из ссылки, оставляя на его месте Default::default(). struct Buffer { data: Vec<u8>, } impl Buffer { fn process(&mut self) { // Мы "выкрадываем" вектор. // В self.data теперь пустой Vec (без аллокаций). let raw_data = std::mem::take(&mut self.data); // Тяжелая обработка в другом потоке/функции, // требующая владения (ownership) let processed = heavy_transform(raw_data); // Возвращаем результат self.data = processed; } } Это работает для всего, что реализует Default (Option, String, Vec). Для типов без Default есть std::mem::replace. Это zero-cost, семантически верно и намного быстрее клонирования. #rust #std #optimization #tips 📲 Мы в MAX 👉 @rust_lib
12 · 813 ·
R
Rust
Почему Vec::new() это ловушка для производительности. 📈 Векторный рост: Избегаем реаллокаций Мы часто пишем: let mut vec = Vec::new(); for item in heavy_iter { vec.push(item); } Что происходит под капотом? 1. Вектор создается пустым (0 байт). 2. Первый push: аллокация на 4 элемента (условно). 3. Пятый push: места нет. • Создается новый буфер (размером x2). • Все старые элементы копируются туда. • Старый буфер освобождается. • Новый элемент записывается. Это называется Reallocation. Это дорого. Если у вас 10 миллионов элементов, вы сделаете десятки реаллокаций и скопируете гигабайты данных просто так. Решение: Если вы хотя бы примерно знаете размер - подскажите компилятору. // Идеально, если знаем точно let mut vec = Vec::with_capacity(exact_count); // Или используем итераторы, они часто сами знают свой размер let vec: Vec<_> = heavy_iter.collect(); collect() умный. Он смотрит на size_hint итератора и сразу аллоцирует нужный буфер (если итератор "честный"). Правило: Vec::new() - только если вы правда не знаете, будет ли там хоть один элемент. В остальных случаях - with_capacity. #rust #performance #vectors 📲 Мы в MAX 👉 @rust_lib
9 · 827 ·

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем