Доступно очередное обновление Rust 1.26
Новости Отредактировано
Релиз является самым значительным обновлением с момента выхода Rust 1.0. Среди нововведений – использование анонимного возвращаемого типа, Result как возвращаемое значение функции main и автоматическое добавление ссылок в шаблонах.
734 открытий744 показов
Вышла новая версия системного языка программирования общего назначения Rust. По словам разработчиков, Rust 1.26 — самый значительный релиз со времен версии 1.0, выпущенной в 2015 году.
impl Trait
В Rust 1.26 добавлена поддержка долгое время находившейся в разработке возможности использовать анонимный тип в качестве возвращаемого типа функции с помощью конструкции impl Trait
:
Вместо того, чтобы явно называть свой возвращаемый тип, функция только гарантирует, что она реализует указанный типаж (или их набор). Во-первых, нововведение позволяет не выписывать сложные типы, получаемые при использовании итераторов. Во-вторых, стало возможно использовать анонимные типы, которые невозможно указать явно (например, типы замыканий), и те, что образованы от них. Без использования impl Trait
подобного эффекта можно достичь, разместив объект в куче:
По сравнению с таким подходом, impl Trait
позволяет избавиться от дополнительной аллокации памяти в куче и использования динамической диспетчеризации, что положительно сказывается на скорости выполнения.
Автоматическое добавление ссылок в шаблонах
В рамках инициативы по улучшению эргономики были реализованы улучшения механизма сопоставления с шаблоном, позволяющие компилятору автоматически использовать операции разыменования и взятия ссылки при использовании соответствующих типов в правой части:
main может возвращать Result
Функцию main()
теперь можно объявить, как возвращающую Result
:
В случае, если из main()
будет возвращен вариант Err
, информация об ошибке будет напечатана на стандартный поток, и процесс будет автоматически завершен с ошибкой.
Прочее
Кроме того, в Rust 1.26 был добавлен оператор ..=
для создания промежутков, включающих свой правый конец, поддержка простейших шаблонов срезов, 128-битных целых типов i128
и u128
, а также многих операторов в const
-выражениях. В стандартную библиотеку было добавлено несколько функций, в том числе fs::read_to_string()
, которая позволяет считать содержимое файла в виде строки за один вызов, и множество методов, работающих с «сырыми» указателями.
В Rust 1.26 также вошла оптимизация обработки сложных вложенных типов компилятором, результатом чего стало ускорение процесса компиляции до 12 %. С подробным списком изменений можно ознакомиться в GitHub-репозитории проекта.
Обновления для популярного языка системного программирования выпускаются каждые шесть недель. Напомним, Rust 1.25 вышел в конце марта 2018 года.
734 открытий744 показов