Rust
Kanalga Telegram’da o‘tish
Полезный контент по программированию на Rust
Ko'proq ko'rsatish2 239
Obunachilar
Ma'lumot yo'q24 soatlar
-27 kun
+1030 kun
Postlar arxiv
2 239
Полиморфизм: подавать холодным
Полиморфизм («истинный», параметрический) — свойство, позволяющее обрабатывать данные разных типов одним образом.
Полиморфизм является одним из трёх столпов ООП, наравне с наследованием и инкапсуляцией, да и в целом краеугольным камнем современного программирования. Думаю, большинство читателей не представляет своей жизни без полиморфизма, за что я, конечно, это большинство никак не осуждаю, ибо сам к нему принадлежу. Дело, однако, в том, что многие не задумываются об устройстве этого полиморфизма, ведь любой принцип программирования, по сути, представляет из себя математическую матрёшку.
Реализуем функции print_static, print_dynamic и print_enum для демонстрации различных методов реализации полиморфизма.
https://habr.com/ru/articles/718888/
👉 @rust_lib
2 239
Как сломанный лифт привел к появлению одного из самых популярных языков программирования
То, что начиналось как маленький побочный проект на ноутбуке одного разработчика — сегодня стало одним из самых успешных языков программирования с открытым исходным кодом, которым пользуются Microsoft, Amazon, Google, Tesla, Discord и многие другие.
Если кто не знает эту историю — велком.
Программисты славятся тем, что часто создают разные одноразовые решения для быстрого устранения возникших проблем или удовлетворения конкретных потребностей. Но случается и так, что решение, созданное под конкретную задачу, оказывается гораздо больше этой самой задачи. И остается актуальным, развивается и процветает даже спустя десятилетия.
Семнадцать лет назад программист из Mozilla Грейдон Хоар вернулся с работы и обнаружил, что лифт в его доме вышел из строя. Он был вынужден подниматься на двадцать первый этаж, проклиная всё на свете. А потом узнал, что лифт не работал из-за сбоя программного обеспечения. Тогда он решил попробовать сделать язык программирования, который сводил бы такие ошибки к нулю. Чтобы даже начинающий разработчик мог бы написать код, который не зависал.
https://habr.com/ru/companies/getmatch/articles/719214/
👉 @rust_lib
2 239
Ripdrag
Утилита Drag and Drop, написанная на Rust и GTK4
https://github.com/nik012003/ripdrag
👉 @rust_lib
2 239
Как при помощи 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 239
Учим Rust вместе
Hello World
Guessing Game
переменные и типы данных
функции и контроль выполнения программы
разбор задач
владение
заимствование и слайсы
структуры и методы
перечислимые типы
пакеты и модули
вектор
строки
HashMap
разбор задачи
обработка ошибок
дженерики
трейты
https://www.youtube.com/playlist?list=PLXhUgKrQD6UoggzaDTQ1luq3XMpYboMTM
👉 @rust_lib
2 239
Реализация Redux на Rust
Redux — это популярная библиотека предсказуемого и последовательного управления состоянием с простой разработкой и сопровождением сложных приложений JavaScript.
Реализуем Redux на Rust, производительном и безопасном статически типизированном языке системного программирования.
Для этого создадим структуру, которой обозначается состояние приложения, и типаж для определения выполняемых с этим состоянием действий. И еще функцию редьюсера, которой принимается текущее состояние и действие, а возвращается обновленное этим действием состояние.
https://levelup.gitconnected.com/implementing-redux-with-rust-a-step-by-step-guide-220acd2885f9
👉 @rust_lib
2 239
Создание модуля WebAssembly с помощью Emscripten, AssemblyScript и Rust
В этой небольшой заметке предлагается рассмотреть несколько способов компиляции модуля для WebAssembly, используя три разных подхода. Мы реализуем решение одной и той же задачки на трёх языках и скомпилируем полученный код в модуль WebAssembly.
Будем использовать:
Emscripten для компиляции кода, написанного на c++
AssemblyScript для компиляции кода, написанного на, собственно, AssemblyScript
wasm-pack для компиляции кода, написанного на Rust
https://habr.com/ru/articles/718874/
👉 @rust_lib
2 239
Введение в Unicode (опять?)
разберём, что из себя представляет Unicode, его символы и их свойства, кодировки. Напишем валидацию строк UTF-8, научимся преобразовывать запись символа в кодировке UTF-8 в код символа (кодпоинт) Unicode и обратно.
выясним, что представляет собой нормализация текста, зачем она нужна и где её применять. расскажу про каноническую эквивалентность символов и эквивалентность совместимости, разберём как делается декомпозиция/композиция, быстрые проверки, под конец — напишем реализацию алгоритмов нормализации.
узнаем, что такое сопоставление (collation) строк, алгоритм сопоставления (UCA), что такое DUCET и CLDR; уровни и веса сопоставлений, различные подходы к взвешиванию весов, немного затронем тему баз данных, и, наконец, напишем пример.
https://habr.com/ru/articles/751616/
👉 @rust_lib
2 239
Как избавиться от проверок выхода за границы при доступе по индексу в 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 239
Solana смарт-контракты на Rust для самых маленьких
Начнем с определения того, что такое "Solana program" - именно так в блокчейне обозначаются смарт-контракты. Это исполняемый код интерпретирующий проходящие через него инструкции, которые в свою очередь являются частью любой транзакции в сети Solana.
https://habr.com/ru/articles/716312/
👉 @rust_lib
2 239
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
2 239
Как создать микросервис на 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
2 239
Hands-on Rust Effective Learning through 2D Game Development and Play
Автор: Herbert Wolverson (2021)
Rust - это новый захватывающий язык программирования, сочетающий в себе возможности языка C с безопасностью памяти, бесстрашным параллелизмом и повышением производительности - а что может быть лучше для обучения, чем создание игр. В каждой главе этой книги представлены практические проекты, начиная от "Hello, World" и заканчивая созданием полноценной игры в стиле dungeon crawler. С помощью этой книги вы приобретете навыки разработки игр, применимые к другим движкам, включая Unity и Unreal.
👉 @rust_lib
2 239
Что может быть проще (сложнее), чем упорядочивание чисел?
Предположим, вы программист и у вас есть два числа. Вы хотите узнать, какое из чисел больше. Если оба числа имеют одинаковый тип, то почти в любом языке программирования решение будет тривиальным. Для этой операции обычно даже есть специальный оператор <=.
Rus https://habr.com/ru/articles/715080/
👉 @rust_lib
2 239
Концепции 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
2 239
Немного о семантиках перемещения, копирования и заимствования
Существует три основных способа передачи данных в функции: перемещение (move), копирование (copy) и заимствование (borrow, иными словами, передача по ссылке). Поскольку изменяемость (мутабельность) неразрывно связана с передачей данных (например, эта функция может заимствовать мои данные, но только если она обещает смотреть на них и ничего более), в итоге мы получаем шесть различных комбинаций.
https://gist.github.com/dubrowgn/c61372647160ae4a52f65ef91da99ddc
👉 @rust_lib
2 239
Пишем прототип программы для обучения английскому языку с помощью OpenAI API
Хочу описать процесс создания приложения, которое работает с OpenAI API. Идея приложения возникла из потребности улучшить мой английский язык. Как говорится, если у вас есть молоток, то все проблемы выглядят как гвозди. Так как я программист, я решил написать Искусственный Интеллект, который будет заменять учителя английского языка.
https://habr.com/ru/articles/712596/
👉 @rust_lib
2 239
5 функций CLI на Rust для оптимизации привычных инструментов
https://betterprogramming.pub/5-cli-tools-made-with-rust-to-improve-already-popular-tools-506af07b6d54
👉 @rust_lib
2 239
Возможности Rust, которые нужны в C++
По многим оценкам, Rust является одним из наиболее быстро развивающихся языков программирования. Хотя этот рост обусловлен многими факторами, в данном докладе речь пойдет о тех аспектах Rust, которые делают его особенно привлекательным в качестве языка системного программирования. Это касается инструментария, сообщества, стратегии и, конечно же, возможностей.
источник
👉 @rust_lib
