Как стать автором
Обновить
52.79

Rust *

Мультипарадигмальный компилируемый язык

Сначала показывать
Порог рейтинга
Уровень сложности

Практическое руководство по Rust. 3/4

Уровень сложности Средний
Время на прочтение 26 мин
Количество просмотров 807



Hello world!


Представляю вашему вниманию третью часть практического руководства по Rust.



Руководство основано на Comprehensive Rust — руководстве по Rust от команды Android в Google и рассчитано на людей, которые уверенно владеют любым современным языком программирования. Еще раз: это руководство не рассчитано на тех, кто только начинает кодить 😉

Читать дальше →
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 0

Новости

Смотрим на современный инструмент для FPGA

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 2.3K

Область разработки для ПЛИС, довольна консервативна и неповоротлива. Поскольку она узкоспециализирована, то новые инструменты и среды появляются редко, а старые инструменты имеют свои слабости в самой своей основе и перекладывать их на новые рельсы уже ни кто не будет. Посмотрим на новый язык и инструмент для ПЛИС разработчиков, который следует современным тенденциям разработки.

Читать далее
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 25

Это слишком опасно для C++

Время на прочтение 6 мин
Количество просмотров 31K

Некоторые паттерны стало возможно использовать на практике только благодаря безопасности Rust по памяти, а на C++ они слишком опасны. В статье приведён один такой пример.

Работая над внутренней библиотекой, написанной на Rust, я создал тип ошибок для парсера, у которых должна быть возможность сделать Clone без дублирования внутренних данных. В Rust для этого требуется указатель с подсчётом ссылок (reference-counted pointer) наподобие Rc.

Поэтому я написал свой тип ошибок, использовал его как вариант ошибок fallible-функций, и продолжил двигаться дальше.

Читать далее
Всего голосов 67: ↑55 и ↓12 +43
Комментарии 108

Cloudflare открыла код Rust-фреймворка для программируемых сетевых сервисов — Pingora

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 4.4K



Мы гордимся тем, что открываем исходный код Pingora — фреймворка на Rust, который мы используем для создания сервисов, обеспечивающих значительную часть трафика в Cloudflare. Pingora выпускается под лицензией Apache 2.0.

Читать дальше →
Всего голосов 18: ↑18 и ↓0 +18
Комментарии 2

Истории

Обзор библиотеки Actix в Rust

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 3.7K

Привет, Хабр!

Actix появился на свет благодаря Николаю Киму, также известного в сообществе под ником fafhrd91. Николай создал экосистему, которая позволяет строить масштабируемые, надежные веб-приложения и микросервисы. Actix основан на модели акторов, концепции, которая была впервые предложена в 1973 году для симуляции активных компонентов в распределенных системах.

Читать далее
Всего голосов 14: ↑12 и ↓2 +10
Комментарии 10

Краткий обзор поведенческих паттернов в Rust

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 3.5K

Привет, Хабр!

Зачем нужны поведенческие паттерны? Вопрос риторический, но ответ на него кроется в самой сути разработки. Поведенческие паттерны предоставляют нам для решения часто встречающихся проблем взаимодействия между объектами и классами.

Паттерны можно реализовать на любом ЯПе и сегодня рассмотрим, как их реализовать в Rust.

Читать далее
Всего голосов 17: ↑12 и ↓5 +7
Комментарии 17

Разработчик-универсал под видом специалиста

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 16K

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

Ниже я опишу сложности, с которыми мне приходилось сталкиваться. Надеюсь, эта информация окажется полезной для других вольных авантюристов. Прошу учесть, что статья отражает преимущественно мой личный опыт, так что делайте на это скидку.
Читать дальше →
Всего голосов 62: ↑57 и ↓5 +52
Комментарии 11

Как устроен языковой сервер

Время на прочтение 7 мин
Количество просмотров 3.6K
В этом посте я хочу прокомментировать один любопытный комментарий из базы кода rust-analyzer. Вот этот комментарий.

Здесь описан интересный рекурсивный алгоритм, неоднократно встречающийся в разных аспектах программирования языковых серверов. Я видел реализации такого алгоритма на Kotlin и C#, а затем сам реализовал его на Rust.

Вот, казалось бы, рандомная подборка возможностей IDE:

  • Переход к определению
  • Завершение кода
  • Прогон теста на курсоре
  • Извлечение переменной

Что общего между ними? Все эти возможности относятся к актуальному положению курсора! В данном случае вводом служит не только состояние кода в конкретный момент времени, но и конкретное расположение исходников проекта, например src/main.rs:90:2.
Читать дальше →
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 2

Практическое руководство по Rust. 2/4

Уровень сложности Средний
Время на прочтение 29 мин
Количество просмотров 5.5K



Hello world!


Представляю вашему вниманию вторую часть практического руководства по Rust.



Руководство основано на Comprehensive Rust — руководстве по Rust от команды Android в Google и рассчитано на людей, которые уверенно владеют любым современным языком программирования. Еще раз: это руководство не рассчитано на тех, кто только начинает кодить 😉

Читать дальше →
Всего голосов 31: ↑29 и ↓2 +27
Комментарии 1

Начало работы с Axum — самым популярным веб-фреймворком Rust

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 8.5K


Когда дело доходит до выбора серверного веб-фреймворка в экосистеме Rust, можно запутаться из-за большого количества вариантов. В прошлом, лидером по популярности был Rocket, но сейчас за первенство сражаются Axum и actix-web, и Axum все больше набирает обороты. В этой статье мы немного погрузимся в Axum — веб-фреймворк для создания REST API на Rust, разрабатываемый командой Tokio. Он прост в использовании и хорошо совместим с Tower — надежной библиотекой для создания модульных компонентов сетевых приложений.


В этой статье мы подробно рассмотрим, как использовать Axum для создания веб-сервиса. Кроме того, мы рассмотрим изменения, которые произошли в версии 0.7.

Читать дальше →
Всего голосов 31: ↑28 и ↓3 +25
Комментарии 8

Rust 1.76.0: обновление совместимости ABI, получение имени типа из ссылки

Уровень сложности Простой
Время на прочтение 2 мин
Количество просмотров 1.3K

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


Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.76.0 вам достаточно выполнить команду:


rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.

Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 2

Практическое руководство по Rust. 1/4

Уровень сложности Средний
Время на прочтение 21 мин
Количество просмотров 11K



Hello world!


Представляю вашему вниманию первую часть практического руководства по Rust.



Руководство основано на Comprehensive Rust — руководстве по Rust от команды Android в Google и рассчитано на людей, которые уверенно владеют любым современным языком программирования. Еще раз: это руководство не рассчитано на тех, кто только начинает кодить 😉

Читать дальше →
Всего голосов 35: ↑30 и ↓5 +25
Комментарии 11

Trait-объекты и полиморфизм в Rust

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 5.3K

Привет, Хабр!

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

Один из способов, с помощью которого Rust достигает полиформизма, - использование Trait-объектов.

Читать далее
Всего голосов 19: ↑15 и ↓4 +11
Комментарии 22

Ближайшие события

Moscow QA #3 — митап по тестированию ПО
Дата 14 марта
Время 18:30 – 21:30
Место
Москва Онлайн
Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Основы Rust: синтаксис и структуры данных

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 10K

Привет, Хабр!

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

В этой статье рассмотрим основы Rust. Статья будет полезна тем, кто только начинает своё знакомство с языком.

Читать далее
Всего голосов 37: ↑23 и ↓14 +9
Комментарии 15

Большая шпаргалка по Rust. 2/2

Уровень сложности Средний
Время на прочтение 39 мин
Количество просмотров 5.5K



Hello world!


Представляю вашему вниманию вторую часть большой шпаргалки по Rust.


Первая часть.


Другой формат, который может показаться вам более удобным.


Обратите внимание: шпаргалка рассчитана на людей, которые хорошо знают любой современный язык программирования, а не на тех, кто только начинает кодить 😉


Также настоятельно рекомендуется хотя бы по диагонали прочитать замечательный Учебник по Rust (на русском языке).

Читать дальше →
Всего голосов 28: ↑27 и ↓1 +26
Комментарии 2

Управление зависимостями в Rust с Cargo

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 1.9K

Привет!

Cargo - это хороший менеджер пакетов Rust, который берет на себя тяжелую работу по управлению зависимостями, сборке проекта, тестированию и многому другому.

В этатье рассмотрим что такое Cargo и как с ним работать.

Читать далее
Всего голосов 16: ↑10 и ↓6 +4
Комментарии 3

Как реализовывается WebAssembly в Rust: кратко

Время на прочтение 4 мин
Количество просмотров 4.3K

Привет, Хабр!

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

з.ы: предполагается, что читатель знает основы webassembly и про что-то из rust

Читать далее
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 1

Передавать пустые срезы между Rust и C/C++ на удивление сложно

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 8.3K

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

В общих чертах она выглядит так:

  • В правила работы с указателями и memcpy в С не заложены грамотные способы представления пустого среза памяти.
  • В С++ с правилами указателей проблем нет, но поведение memcpy здесь аналогично её поведению в С.
  • Интерфейс внешних функций (Foreign Function Interface, FFI) в Rust не лишён накладных издержек. Rust использует несовместимое с C/C++ представление срезов, требуя их преобразования при передаче в обоих направлениях. При этом о преобразовании очень легко забыть.
  • Срезы в Rust также несовместимы с арифметикой указателей, что создаёт проблемы в работе итератора срезов стандартной библиотеки. (Обновление от 2024-01-16: похоже, над этой проблемой работают).

Поскольку проблемы FFI касаются нескольких языков, я писал статью в качестве общей справки, описывающей их несогласованность.
Читать дальше →
Всего голосов 64: ↑59 и ↓5 +54
Комментарии 53

Делаем двоичные файлы Rust меньше по умолчанию

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 4.6K

Вы когда-нибудь пробовали компилировать program helloworld на Rust в режиме --release? Если да, то видели, какой размер двоичного файла получается? Достаточно сказать, что он не очень маленький. Или, по крайней мере, не был таким до недавнего времени. В этом посте я расскажу, как узнал об этой проблеме и попытался устранить её в Cargo.

Читать далее
Всего голосов 38: ↑38 и ↓0 +38
Комментарии 13

Основы многопоточности в Rust

Время на прочтение 7 мин
Количество просмотров 6.4K

Привет!

Думаю, уже всем известно, что многопоточность – это мастхев для большинства приложений.

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

Читать далее
Всего голосов 23: ↑21 и ↓2 +19
Комментарии 6

Вклад авторов

Работа