Rust
Open in Telegram
2 230
Subscribers
No data24 hours
+37 days
+230 days
Posts Archive
2 230
Как Rust меняет мышление разработчика
Я страшно ненавижу C++. Обычно я люблю программирование, но каждый проект, с которым я имел дело на C++, ощущался как монотонная рутина. В январе 2023 года я пошёл по пути изучения Rust, поэтому теперь могу сказать, что знаю язык системного программирования, который действительно люблю использовать.
Первый стабильный релиз Rust появился в 2015 году, и каждый год, начиная с 2016, он признаётся в Stack Overflow’s Annual Developer Survey самым любимым языком (в 2023 году эта категория называется «обожаемый»). Почему же разработчики, ощутившие вкус Rust, не могут отказаться от его использования? Похоже, в мире прогремевших наследников C/C++ репутация растёт только у Rust. Как же этот язык, появившийся на сцене меньше десятка лет назад, стал настолько популярным?
Rus https://habr.com/ru/companies/ruvds/articles/769846/
Eng https://medium.com/@caring_lion_hedgehog_829/rust-beyond-the-syntax-9d10fe5ccaec
👉 @rust_lib
2 230
Тест производительности Web-фреймворков для Rust
В этой статье мы сравним производительность 3 наиболее популярных бекэнд-фреймворков для Rust: Axum, Actix и Rocket.
https://habr.com/ru/articles/769100/
👉 @rust_lib
2 230
Не так страшен Rust, как его излагают
Последние годы часто хвалят язык программирования Rust. Однако, без изучения синтаксиса и особенностей языка в нём сложно разобраться. Честно говоря, при первом просмотре дальше простых примеров я продвинуться не смог. Вроде догадываешься, что тут указываем тип переменных, амперсанд – это вроде “я только посмотреть”, но всё равно код складывался в некую мешанину иероглифов с кучей скобок и, на первый взгляд, случайно проставленных точек с запятыми. То ли дело Python, минимализм синтаксиса которого так привлекателен для неокрепших душ. Однако, так ли сложен Rust на самом деле или это миф?
Я предположил, что те базовые знания по программированию, которые предлагают распространенные курсы можно дать и с помощью Rust.
https://habr.com/ru/articles/677978/
👉 @rust_lib
2 230
Rust 1.73.0: новый формат сообщений о панике, изменение в работе с локальными данными потока
Команда Rust рада сообщить о новой версии языка — 1.73.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.73.0 вам достаточно выполнить команду:
rustup update stable
https://blog.rust-lang.org/2023/10/05/Rust-1.73.0.html
👉 @rust_lib2 230
Пишем игру от первого лица в 2КБ на Rust
Поначалу кажется, что создать игру от первого лица без движка или графического API практические невозможно. В этом посте я расскажу, как это сделать при помощи алгоритма под названием ray casting.
Моя цель — показать, что сложную задачу можно разбить на более простые части, и если я всё сделаю правильно, то у вас появится ощущение, что вы сами открыли, как работает игра.
Для начала разберёмся, как работает алгоритм, а затем построчно напишем его. Затем мы пересмотрим код, добавим несколько возможностей и оптимизируем его размер. Я постарался сделать пост максимально доступным и дружелюбным, но вам поможет приличное знание программирования, Rust и основ геометрии.
Rus https://habr.com/ru/articles/720672/
Eng https://grantshandy.github.io/posts/raycasting/
👉 @rust_lib
2 230
Rust и C++ при создании астродинамической библиотеки
Моя прошлая статья заканчивалась тем, что у меня возникла проблема выбора на чем писать и я говорил, что в следующей части продолжу свое изложение как сравнение Rust и C++. Но проблема на тот момент заключалось в том, что с первым из них я был знаком шапочно, и чтобы нести ахинею нужно было узнать его поглубже. И как оказалось этот процесс не очень простой.
Изначально я планировал еще привести сравнение производительности, но сейчас понимаю, что будет это не совсем корректно. «Почему?» – спросите Вы меня. Давайте разбираться вместе. Да, пока не начали, оговорюсь сразу, что в данной статье я решил не рассказывать о смысле приводимого кода, т.к. это сразу усложнит восприятие.
https://habr.com/ru/articles/720538/
👉 @rust_lib
2 230
Repost from GitHub Сообщество
Gyroflow
Приложение, что позволяет стабилизировать ваши видео, используя данные о движении от гироскопа и, при необходимости, акселерометра
Современные камеры записывают эти данные внутри себя (GoPro, Sony, Insta360 и т. д.), и это приложение стабилизирует отснятый материал именно с их помощью. Gyroflow также поддерживает использование данных из внешнего источника.
https://github.com/gyroflow/gyroflow
👉 @Githublib
2 230
Rust Web Programming: A hands-on guide to developing, packaging, and deploying fully functional Rust web apps, 2nd Edition
Автор: Maxwell Flitton (2023)
Используйте язык программирования Rust для создания полнофункциональных веб-приложений с использованием асинхронного Rust для усиления безопасности и повышения производительности ваших программ.
Работайте с передовыми веб-технологиями, такими как distroless серверы Rust, Terraform и развертывание AWS.
Познакомьтесь с концепциями async, такими как акторы и постановка задач в очередь, используя фреймворки более низкого уровня, такие как Tokio
Создайте полноценное веб-приложение на Rust с базой данных, аутентификацией и фронтендом.
2 230
Как я приложение с Go на Rust переписывал
О Rust я слышал ещё несколько лет назад и все его либо хвалили, либо порицали, по различным причинам. Но сам как-то не брался за него - мне, неподготовленному к подобному синтаксису и не знакомому с подобными языками хотя бы на базовом уровне, в то время он казался совершенно непонятным. Но вот спустя время для себя решил написать что-то похожее на бенчмарк для тестов локальных HTTP API-серверов.
https://habr.com/ru/articles/720382/
👉 @rust_lib
2 230
Полиморфизм: подавать холодным
Полиморфизм («истинный», параметрический) — свойство, позволяющее обрабатывать данные разных типов одним образом.
Полиморфизм является одним из трёх столпов ООП, наравне с наследованием и инкапсуляцией, да и в целом краеугольным камнем современного программирования. Думаю, большинство читателей не представляет своей жизни без полиморфизма, за что я, конечно, это большинство никак не осуждаю, ибо сам к нему принадлежу. Дело, однако, в том, что многие не задумываются об устройстве этого полиморфизма, ведь любой принцип программирования, по сути, представляет из себя математическую матрёшку.
Реализуем функции print_static, print_dynamic и print_enum для демонстрации различных методов реализации полиморфизма.
https://habr.com/ru/articles/718888/
👉 @rust_lib
2 230
Как сломанный лифт привел к появлению одного из самых популярных языков программирования
То, что начиналось как маленький побочный проект на ноутбуке одного разработчика — сегодня стало одним из самых успешных языков программирования с открытым исходным кодом, которым пользуются Microsoft, Amazon, Google, Tesla, Discord и многие другие.
Если кто не знает эту историю — велком.
Программисты славятся тем, что часто создают разные одноразовые решения для быстрого устранения возникших проблем или удовлетворения конкретных потребностей. Но случается и так, что решение, созданное под конкретную задачу, оказывается гораздо больше этой самой задачи. И остается актуальным, развивается и процветает даже спустя десятилетия.
Семнадцать лет назад программист из Mozilla Грейдон Хоар вернулся с работы и обнаружил, что лифт в его доме вышел из строя. Он был вынужден подниматься на двадцать первый этаж, проклиная всё на свете. А потом узнал, что лифт не работал из-за сбоя программного обеспечения. Тогда он решил попробовать сделать язык программирования, который сводил бы такие ошибки к нулю. Чтобы даже начинающий разработчик мог бы написать код, который не зависал.
https://habr.com/ru/companies/getmatch/articles/719214/
👉 @rust_lib
2 230
Ripdrag
Утилита Drag and Drop, написанная на Rust и GTK4
https://github.com/nik012003/ripdrag
👉 @rust_lib
2 230
Как при помощи Rust в 150 раз ускорить код на Python
Python — довольно простой в освоении язык, по сравнению с некоторыми другими языками код на нём пишется очень быстро. Но в жертву приносится скорость выполнения кода.
Перепишем часть Python-кода в Rust и импортируем этот код в виде пакета Python в проект. Получим сверхбыстрый пакет Python, который сможем импортировать и использовать, как любой другой пакет. В качестве бонуса добавим многопроцессорность и в итоге получим функцию, которая примерно в 150 раз быстрее обычного кода на Python.
Rus https://habr.com/ru/companies/skillfactory/articles/718894/
Eng https://towardsdatascience.com/create-a-python-package-with-super-fast-rust-code-in-3-steps-a27389629beb
👉 @rust_lib
2 230
Учим Rust вместе
Hello World
Guessing Game
переменные и типы данных
функции и контроль выполнения программы
разбор задач
владение
заимствование и слайсы
структуры и методы
перечислимые типы
пакеты и модули
вектор
строки
HashMap
разбор задачи
обработка ошибок
дженерики
трейты
https://www.youtube.com/playlist?list=PLXhUgKrQD6UoggzaDTQ1luq3XMpYboMTM
👉 @rust_lib
2 230
Реализация Redux на Rust
Redux — это популярная библиотека предсказуемого и последовательного управления состоянием с простой разработкой и сопровождением сложных приложений JavaScript.
Реализуем Redux на Rust, производительном и безопасном статически типизированном языке системного программирования.
Для этого создадим структуру, которой обозначается состояние приложения, и типаж для определения выполняемых с этим состоянием действий. И еще функцию редьюсера, которой принимается текущее состояние и действие, а возвращается обновленное этим действием состояние.
https://levelup.gitconnected.com/implementing-redux-with-rust-a-step-by-step-guide-220acd2885f9
👉 @rust_lib
2 230
Создание модуля WebAssembly с помощью Emscripten, AssemblyScript и Rust
В этой небольшой заметке предлагается рассмотреть несколько способов компиляции модуля для WebAssembly, используя три разных подхода. Мы реализуем решение одной и той же задачки на трёх языках и скомпилируем полученный код в модуль WebAssembly.
Будем использовать:
Emscripten для компиляции кода, написанного на c++
AssemblyScript для компиляции кода, написанного на, собственно, AssemblyScript
wasm-pack для компиляции кода, написанного на Rust
https://habr.com/ru/articles/718874/
👉 @rust_lib
2 230
Введение в Unicode (опять?)
разберём, что из себя представляет Unicode, его символы и их свойства, кодировки. Напишем валидацию строк UTF-8, научимся преобразовывать запись символа в кодировке UTF-8 в код символа (кодпоинт) Unicode и обратно.
выясним, что представляет собой нормализация текста, зачем она нужна и где её применять. расскажу про каноническую эквивалентность символов и эквивалентность совместимости, разберём как делается декомпозиция/композиция, быстрые проверки, под конец — напишем реализацию алгоритмов нормализации.
узнаем, что такое сопоставление (collation) строк, алгоритм сопоставления (UCA), что такое DUCET и CLDR; уровни и веса сопоставлений, различные подходы к взвешиванию весов, немного затронем тему баз данных, и, наконец, напишем пример.
https://habr.com/ru/articles/751616/
👉 @rust_lib
2 230
Как избавиться от проверок выхода за границы при доступе по индексу в Rust (без unsafe!)
В сети часто можно услышать, что в Rust доступ по индексу со слайсом (как, например, my_slice[i]) работает медленно, и вместо этого в целях повышения производительности вы должны организовать свой код как‑нибудь иначе.
Детали этого, однако, зачастую туманны. Мало где можно найти какие‑либо внятные замеры производительности, и нет почти никакой документации по устранению этих накладных расходов, не прибегая к unsafe коду.
Поэтому я решил поделиться с вами опытом и методами, которые я обнаружил в процессе удаления проверок выхода индекса за границы (далее просто «проверка границ»), а также удаления unsafe кода, где это возможно, из множества громоздких крейтов.
В этой статье я расскажу:
Каковы типичные накладные расходы на проверку границ при доступе по индексу.
Как избежать проверки границ без использования unsafe кода.
Как убедиться, что проверки границ были устранены.
Как замерять производительность и профилировать Rust‑код.
Как нам сконструировать самую дешевую проверку границ в случае, когда она все‑таки необходима.
https://shnatsel.medium.com/how-to-avoid-bounds-checks-in-rust-without-unsafe-f65e618b4c1e
👉 @rust_lib
2 230
Solana смарт-контракты на Rust для самых маленьких
Начнем с определения того, что такое "Solana program" - именно так в блокчейне обозначаются смарт-контракты. Это исполняемый код интерпретирующий проходящие через него инструкции, которые в свою очередь являются частью любой транзакции в сети Solana.
https://habr.com/ru/articles/716312/
👉 @rust_lib
