
Rust *
Мультипарадигмальный компилируемый язык
Как избавиться от проверок выхода за границы при доступе по индексу в Rust (без unsafe!). Часть 1

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

В этой статье я попытался максимально просто и понятно донести теорию работы блокчейна Solana и на практике показал, как с нуля написать программу перевода sol между двумя кошельками.
Rust: ни в коем случае не используйте unwrap() в продакшене

В этой статье речь пойдет о том, почему использовать метод unwrap() для типов Result в продакшн коде Rust крайне нежелательно.
Как создать микросервис на 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
Что может быть проще (сложнее), чем упорядочивание чисел?

Предположим, вы программист и у вас есть два числа. Вы хотите узнать, какое из чисел больше. Если оба числа имеют одинаковый тип, то почти в любом языке программирования решение будет тривиальным. Для этой операции обычно даже есть специальный оператор
<=. Вот пример на Python:>>> "120" <= "1132"
FalseСравнение двух чисел на Brainfuck оставим в качестве упражнения для читателя.
Ой. Ну, строго говоря, это строки, а не числа, а строки обычно сортируются лексикографически. Но это всё-таки числа, хотя и представленные в виде строк. Это может показаться глупым, но такая проблема очень распространена в интерфейсах пользователя, например, в списках файлов. Именно поэтому нужно отбивать числовые имена файлов нулями (
frame-00001.png) или использовать описания, сохраняющие лексикографический порядок, например, ISO 8601 для дат.Впрочем, я отклонился от темы. Предположим, числа действительно представлены числовыми типами. Тогда всё просто и
<= отлично работает:>>> 120 <= 1132
TrueНо так ли это?
Какой язык программирования выбрать? Часть 1. Rust

Какой язык программирования выбрать? Открываем серию статей об этом! Наши разработчики будут рассказывать об особенностях, применении, плюсах и минусах языков, которые используются в «Криптоните». Начинаем с Rust: опытом поделится Андрей Чесноков, ведущий системный программист.
Концепции Rust, которые неплохо бы знать пораньше

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

Ни для кого не секрет, что, используя GitHub Pages, вы можете бесплатно разместить свой статический веб-сайт в сети Интернет. 1 Гбайт доступного пространства, SSL-сертификат, возможность привязать собственный домен — разве не сказка? Но что делать, если вам необходимо, чтобы содержимое вашего статического ресурса периодически обновлялось? Допустим, несколько раз в час.
Пути решения уже существуют, и в этой статье я расскажу об одном из них. Вооружившись GitHub Actions в качестве среды выполнения и отдельной веткой Git-репозитория в качестве хранилища, мы организуем автоматизированный пайплайн получения, обработки и отображения малых неконфиденциальных данных, который будет ежемесячно нам обходиться в целых 0 рублей.
Немного о семантиках перемещения, копирования и заимствования

Или разглагольствования и жалобы на текущее положение вещей в программировании и другие, возможно, связанные с этим претензии.
Rust 1.67.0: #[must_use] для Future, смена реализации mpsc
Команда Rust рада сообщить о новой версии языка — 1.67.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.67.0 вам достаточно выполнить команду:
rustup update stableЕсли у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.
Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать beta (rustup default beta) или nightly (rustup default nightly) канал. Пожалуйста, сообщайте обо всех встреченных вами ошибках.
Rust: что такое unit-подобные структуры? Определение, назначение и примеры

Unit-подобная структура (или “unit-like”, потому что она похожа на пустой кортеж (), иногда называемый “unit”) — это специальная структура на языке программирования Rust, которую мы объявляем без каких-либо полей. Определяется она с помощью ключевого слова struct, за которым следует имя unit-подобной структуры, а затем пара фигурных скобок без полей внутри, которые обычно опускаются при объявлении.
KubEnv — простое управление конфигами Kubernetes

Привет, Хабр!
На моей работе мы пользуемся Kubernetes, для наших задач это очень полезный инструмент, который снимает с DevOps-ов и разработчиков много головной боли. Для нашей команды сейчас настроено 4 кластера, и переключение между ними мною происходит либо руками, либо с помощью bash-скрипта. Я написал приложение, которое упрощает эту задачу и также делает приятным управление конфигами Kubernetes.
Ближайшие события
Неполная, неточная и наполовину выдуманная история исключений

Давным-давно, когда деревья были маленькие, дискеты большие, а трава зеленая, все писали на языках низкого уровня. В этих языках все было целыми числами. Переменные были числами, массивы были и структуры были просто адресами (числами) и смещениями (тоже числами). Даже если указывали тип данных, то он определял только размер памяти для значения.
В эти старые добрые времена было очень мало причин почему программа не могла продолжить работу. Например деление на ноль, неправильное обращение к памяти (например обращение по адресу равному нулю) или неправильная инструкция процессора (это когда уже совсем все плохо). Если что-то такое происходило операционная система без капли смущения грохала вашу программу.
Чтобы программа не грохалась, а выдавала осмысленное сообщение и давала возможность продолжить работу, надо было добавить проверку.
Поэтический редактор: Rust + Tauri

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

Вы когда-нибудь хотели создать свой бот для игры в крестики-нолики в Discord? Так и ещё при помощи ?blazingly fast?Rust и крейта serenity! Всех заинтересовавшихся прошу под кат.
Как я собрался писать открытую библиотеку для разработки и управления спутниками
В жизни каждого человека есть время разбрасывать камни, а есть время собирать. После 12 лет работы в космической отрасли настало и мое время. И как мне видится есть противоречие между трендом в спутникостроении и технологическим процессами.
В чем суть? Главный тренд – это снижение стоимости аппаратов за счет более адекватной оценки рисков. И по идее весь процесс должен выглядеть так: вначале создается адекватная модель того, как будет жить и существовать спутник, затем с опорой на нее мы его строим, потом запускаем, получаем данные, корректируем нашу модель.
Но реальность такова...
Пишем телеграм-бота на Rust, предварительно спаяв сетевую карту

Что делать, если ваш микроконтроллер не умеет работать с сетью, а бота для телеграма написать хочется? Конечно же, сделать свой сетевой адаптер на логических микросхемах!
Rust 1.66.0: дискриминанты для перечислений с полями, black_box, cargo remove
Команда Rust рада сообщить о новой версии языка — 1.66.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.66.0 вам достаточно выполнить команду:
rustup update stableЕсли у вас ещё нет rustup, то можете установить его со страницы на нашем веб-сайте, а также ознакомиться с подробным описанием выпуска 1.66.0 на GitHub.
Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать beta (rustup default beta) или nightly (rustup default nightly) канал. Пожалуйста, сообщайте обо всех встреченных вами ошибках.
Сказ о M1 GPU

Привет всем, в эфире Асахи Лина!✨
marcan попросил меня написать статью о M1 GPU, и вот она готова ~! Это был долгий проект, растянувшийся на несколько месяцев, и было о чём поведать, так что, надеюсь, вам понравится!
Вклад авторов
humbug 810.2RustLangRu 676.8badcasedaily1 475.0freecoder_xx 468.0PsyHaSTe 460.2m1rko 424.0Bright_Translate 397.6ozkriff 376.6aio350 360.8mkpankov 319.2
