Вышел Rust 1.30
Новости Отредактировано
Разработчики упростили работу с модулями и расширили возможности макросов. В Rust 1.30 разрешили использовать ключевые слова как идентификаторы.
2К открытий2К показов
В блоге разработчиков мультипарадигмального языка программирования Rust опубликована информация о выходе Rust 1.30. Создатели улучшили модульную систему, расширили возможность применения макросов и внесли ещё несколько правок.
Работа с модулями в Rust 1.30
Создатели языка обратили внимание на то, что правила работы с модулями в Rust неинтуитивны и затрудняют освоение языка. В версии 1.30 они постарались сделать эту систему более понятной, внеся некоторые изменения в use
.
Внешние контейнеры теперь загружаются первыми:
Благодаря этому исправлению при обработке кода внешние контейнеры будут использоваться независимо от иерархии модулей.
Кроме того, use
выводит в область видимости объекты с помощью ключевого слова crate
:
Использование макросов
В Rust 1.30 разработчики реализовали опцию создания двух новых типов процедурных макросов. Attribute-like макрос даёт пользователю возможность определять собственные атрибуты. Он также обладает большей гибкостью в действии, чем пользовательское извлечение, так как его можно использовать в функциях. В качестве примера разработчики приводят код, который будет применён во фреймворке веб-приложения:
При этом атрибут #[route]
определяется самим фреймворком и может выглядеть следующим образом:
Function-like макрос работает как вызов функции. Пример определения макроса-функции, обрабатывающей SQL-запрос в Rust 1.30, может выглядеть так:
В таком случае в коде программы макрос sql!
используется следующим образом:
Разработчики добавили возможность выводить макросы в поле видимости с помощью use
. Эта мера помогла упорядочить код и исключить аннотацию macro_use
.
Контейнер proc_macro
теперь работает стабильно, что позволит использовать API для написания макросов.
Поскольку по мере развития языка постепенно менялся набор ключевых слов, в Rust 1.30 было принято решение сделать доступным использование таких слов в качестве идентификаторов с помощью префикса #r
.
Создатели Rust задумались о пользователях, которые работают с RTL-письменностью, поэтому в именах некоторых функций слово «left» заменили на «start», а «right» на «end».
В макросы добавили управление видимостью ключевых слов, таких как pub
, употребляя спецификатор vis
. Для сборки приложения без использования стандартной библиотеки в режиме no_std добавлен атрибут #[panic_handler]
. Он позволяет определять функции для обработки сбоев (panic) в Rust runtime.
Предыдущие крупные изменения языка произошли в версии 1.28, вышедшей в начале августа 2018 года. Тогда разработчики добавили возможность настройки глобальных аллокаторов памяти. Опубликованная в середине сентября версия 1.29 получила инструмент статистического анализа cargo clippy
и функцию автоматического исправления некоторых синтаксических ошибок cargo fix
. Rust регулярно обновляется, и уже на 29 октября 2018 года запланирован релиз беты 1.31 (Rust 2018).
2К открытий2К показов