Rust
2.03K subscribers
121 photos
85 videos
2 files
162 links
Полезный контент по программированию на Rust
Download Telegram
Шпаргалка по Rust

Мы создали эту шпаргалку по Rust изначально для студентов нашего Rust Bootcamp: Rust Programming: Но теперь мы делимся ею со всеми разработчиками, которые хотят выучить и запомнить некоторые ключевые функции и концепции Rust, а также иметь краткое справочное руководство по основам Rust.

Мы гарантируем, что это лучшая и наиболее полная шпаргалка по Rust, которую вы можете найти.

https://zerotomastery.io/cheatsheets/rust-cheat-sheet/

👉 @rust_lib
👍6
Тестирование Rust

Я всё ещё продолжаю изучать Rust. Кроме синтаксиса, для знания языка нужно понимать его идиомы и экосистему. Сейчас я нахожусь на этапе изучения тестирования в Rust.

Rus https://habr.com/ru/companies/ruvds/articles/697772/

Eng https://dzone.com/articles/different-test-scopes-in-rust

👉 @rust_lib
👍7
Какую модель памяти следует использовать в языке Rust?

В этой статье рассматривается несколько альтернативных моделей памяти для языка Rust. Надеюсь, эта дискуссия будет ценна всему сообществу Rust – но, в конце концов, это их язык, поэтому и выбор модели памяти тоже за ними.

Rus https://habr.com/ru/companies/timeweb/articles/697882/

Eng https://paulmck.livejournal.com/66175.html

👉 @rust_lib
👍4👎1
Работа с графикой на языке Rust

Всем привет! Меня зовут Саша и я backend разработчик. Нет, не на rust. Но раст мой любимый язык и недавно я задался целью портировать движок онлайн игры, написанный на C++. Первый месяц ушел на то, чтобы разобраться с бинарными ассетами, их чтением и управлением. Но статья будет не об этом, а о WGPU.

Часть 1 https://habr.com/ru/articles/690514/
Часть 2 https://habr.com/ru/articles/698426/


👉 @rust_lib
👍5
Простое понимание замыканий в Rust

У вас бывало такое, что вы никак не можете скомпилировать код с замыканиями в Rust? Уже и все варианты Fn-трейтов перебрали, и move написали везде, где можно, а borrow checker все равно не унимается? И тут оказывается, что просто нужно внутри замыкания клонировать переданную переменную окружения! Сложно и непонятно. Дурацкий привереда Rust.

На самом деле довольно просто понять, почему так происходит и на что влияет move, а на что — клонирование. Но отсутствие подобного понимания я наблюдаю не только у начинающих программистов, но и у вполне зрелых. Хуже того, есть статьи, в которых это объясняется неправильно.

Итак, ключ к пониманию — это представление, что замыкание на самом деле реализуется компилятором как структура. Причем захваченные переменные окружения становятся полями структуры, а тело замыкания становится телом метода для вызова (одного из трех возможных: Fn::call, FnMut::call_mut, FnOnce::call_once).

https://habr.com/ru/articles/699596/

👉 @rust_lib
👍4🤔1
Rust: параметризуем мутабельность через маркеры и ассоциированные типы

Borrow-checker — отличный секюрити, который очень эффективен, если мы находимся в безопасном Rust. Его поведение отлично описано в RustBook, и, по крайней мере, я почти никогда не сталкиваюсь с придирками, которым я бы не был благодарен.


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

https://habr.com/ru/articles/703018/

👉 @rust_lib
👍4
Rust в стартапе: поучительная история

Rust прекрасен для определенных целей. Но подумайте дважды перед тем как внедрять его в стартап, который должен быстро развиваться.

Я очень долго думал писать ли мне этот пост или нет, потому что я не хочу начинать или быть вовлеченным в холивар про языки программирования (чтобы сразу расставить все точки над "i": Visual Basic самый лучший язык программирования на свете). Но уже несколько людей спрашивали меня про мой опыт с Rust и должны ли они использовать его в своих проектах. В общем, я хочу поделиться своими наблюдениями, какие я вижу достоинства и недостатки Rust в стартапах, когда скорость разработки и легкость масштабирования команды очень важны.

Rus https://habr.com/ru/articles/704362/

Eng https://mdwdotla.medium.com/using-rust-at-a-startup-a-cautionary-tale-42ab823d9454

👉 @rust_lib
👍4
Генератор для приёма QO-100 на MAX2870

Не так давно заинтересовался связью через катарский спутник QO-100. Собственно, он такой единственный геостационарный радиолюбительский, что делает его совершенно уникальным. Странно, что про него на хабре ничего не писали, технически это совершенно новый уровень радиолюбительской связи. Работает он в СВЧ диапазоне, поэтому к аппаратуре предъявляются специфические требования. В этой заметке хотел бы рассказать, как решал неожиданную для меня проблему создания высококачественного генератора на MAX2870 с использованием Bluepill и Rust.

https://habr.com/ru/articles/704968/

👉 @rust_lib
👍2🤔1
От крышки рояля до фреймворка на rust: как системное программирование помогает творческой реализации

Здравствуйте, меня зовут Тимофей, и я алкоголик программирую, чтобы писать музыку. Судя по всему, недуг мой прогрессирует:

Пять лет назад, когда я впервые услышал про LilyPond — язык программирования, на котором можно писать партитуры в текстовом редакторе — я посмеялся над гиком, что это придумал, и прошёл дальше.

Два года назад я прочитал код партитуры из примеров — удивился, насколько логично и музыкально он выглядит, подивился задротству автора, и пошёл набирать ноты в MuseScore.

В этом году я пишу экспортёр MIDI из Reaper в исходники LilyPond, а сегодня зарелизил rea-rs: фреймворк для написания расширений для Reaper на rust.

https://habr.com/ru/articles/705600/

👉 @rust_lib
👍4🤯1
Разработка макроса Rust для автоматического написания шаблонного кода SQL

Эта статья посвящена написанию макроса для Rust, который автоматически реализует оберточные методы в отношении SQL-операторов, чтобы уменьшить требования к шаблонному коду при использовании баз данных SQL. Макрос доступен на сайте crates.io, но на данном этапе является незавершенной разработкой с многочисленными ограничениями. Среди прочего, он включает только поддержку rusqlite-обертки. Исходный код процедурного макроса доступен тут на условиях лицензии свободного программного обеспечения, разработанной Массачусетским технологическим институтом.

https://betterprogramming.pub/develop-a-rust-macro-to-automatically-write-sql-boilerplate-code-60c25d86adcb

👉 @rust_lib
👍3
Пишем Discord бота крестики-нолики

Вы когда-нибудь хотели создать свой бот для игры в крестики-нолики в Discord? Так ещё при помощи 🚀blazingly fast🚀Rust и крейта serenity!

https://habr.com/ru/articles/710158/

👉 @rust_lib
👍4
Поэтический редактор: Rust + Tauri

В чём-то сочинение стихов похоже на написание кода — имеет значение только "чистый" текст, и этот текст, как и код, подчиняется определенным правилам. Поэту могли бы пригодиться те самые "автоподсказки" и подсветка кода стихов. Может, даже с какой-то поддержкой рефакторинга, помочь поэту найти слабое место. Но найти что-то подобное (особенно на русском языке) у меня не вышло. Например, на запрос poetry editor в основном выпадают сервисы по найму редакторов-людей. Проекты, конечно, есть, но они либо слабые, либо мёртвые (поправьте меня, если я неправ).

https://habr.com/ru/articles/710594/

👉 @rust_lib
👍2
Media is too big
VIEW IN TELEGRAM
Возможности Rust, которые нужны в C++

По многим оценкам, Rust является одним из наиболее быстро развивающихся языков программирования. Хотя этот рост обусловлен многими факторами, в данном докладе речь пойдет о тех аспектах Rust, которые делают его особенно привлекательным в качестве языка системного программирования. Это касается инструментария, сообщества, стратегии и, конечно же, возможностей.

источник

👉 @rust_lib
👍31
5 функций CLI на Rust для оптимизации привычных инструментов

https://betterprogramming.pub/5-cli-tools-made-with-rust-to-improve-already-popular-tools-506af07b6d54

👉 @rust_lib
👍2
Пишем прототип программы для обучения английскому языку с помощью OpenAI API

Хочу описать процесс создания приложения, которое работает с OpenAI API. Идея приложения возникла из потребности улучшить мой английский язык. Как говорится, если у вас есть молоток, то все проблемы выглядят как гвозди. Так как я программист, я решил написать Искусственный Интеллект, который будет заменять учителя английского языка.

https://habr.com/ru/articles/712596/

👉 @rust_lib
👍3
Немного о семантиках перемещения, копирования и заимствования

Существует три основных способа передачи данных в функции: перемещение (move), копирование (copy) и заимствование (borrow, иными словами, передача по ссылке). Поскольку изменяемость (мутабельность) неразрывно связана с передачей данных (например, эта функция может заимствовать мои данные, но только если она обещает смотреть на них и ничего более), в итоге мы получаем шесть различных комбинаций.

https://gist.github.com/dubrowgn/c61372647160ae4a52f65ef91da99ddc

👉 @rust_lib
👍2🤔1
Концепции Rust, которые неплохо бы знать пораньше

Весь минувший месяц я глаз не мог оторвать от языка программирования Rust, ведь его конёк – создание современных программ, обеспечивающих безопасную работу с памятью. За прошедшие годы появилось несколько языков, которые позиционировались как «инструмент что надо» для написания надёжного бекенд-софта. Постепенно маятник качнулся от Java/C++ к Go и Rust, выстроенных на многолетних разработках по теории языков программирования. Суть – в создании инструментов, которые были бы эффективны именно в наш век.

Цифры Rust говорят сами за себя. Мало того, что в знаменитом опросе «ваш любимый язык» с сайта Stackoverflow язык Rust лидирует на протяжении семи лет подряд, так он ещё и недавно вошёл в состав ядра Linux – такое ранее не удавалось ни одному языку кроме C. Что особенно меня восхищает в Rust – так это подлинная новизна, которую он привносит в искусство программирования.

Rus https://habr.com/ru/articles/714980/

Eng https://rauljordan.com/rust-concepts-i-wish-i-learned-earlier/

👉 @rust_lib
👍6🥱2🤡1
Что может быть проще (сложнее), чем упорядочивание чисел?

Предположим, вы программист и у вас есть два числа. Вы хотите узнать, какое из чисел больше. Если оба числа имеют одинаковый тип, то почти в любом языке программирования решение будет тривиальным. Для этой операции обычно даже есть специальный оператор <=.

https://habr.com/ru/articles/715080/

👉 @rust_lib
👍2
Как создать микросервис на Rust при помощи gRPC

В сегодняшнем туториале по Rust мы откроем для себя мир gRPC. Для этого создадим очень простой микросервис с единственной конечной точкой, который будет отзеркаливать то сообщение, что мы ему пошлем. Чтобы протестировать наш микросервис, мы также напишем простой клиент на Rust.

Перед изучением этого поста также будет полезно посмотреть предыдущие публикации автора по Rust:

https://blog.ediri.io/lets-build-a-cli-in-rust
https://blog.ediri.io/how-to-asyncawait-in-rust-an-introduction


Rus https://habr.com/ru/companies/timeweb/articles/715854/

Eng https://blog.ediri.io/creating-a-microservice-in-rust-using-grpc

👉 @rust_lib
👍7
Rust: ни в коем случае не используйте unwrap() в продакшене

В этой статье речь пойдет о том, почему использовать метод unwrap() для типов Result в продакшн коде Rust крайне нежелательно.

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

Одно из средств, которые Rust использует для обработки ошибок, — это тип Result, который может представлять успешный (вариант Ok) или неудачный (вариант Err) результаты. Метод unwrap() является удобным способом извлечения значения из типа Result в тех случаях, когда вы ожидаете, что операция завершится успешно. Однако, использование unwrap() в продакшн коде может быть опасным, и его следует избегать.

Rus https://habr.com/ru/companies/otus/articles/716802/

Eng https://levelup.gitconnected.com/rust-never-use-unwrap-in-production-c123b311f620

👉 @rust_lib
👍5🤡2👎1