Команда Rust объявила о новом выпуске, который предлагает улучшенную индексацию массивов, расширенный безопасный доступ к полям объединения и дополнения к стандартной библиотеке.
Rust изначально спонсировался Mozilla и предназначен для использования в ситуациях, включая встраивание в другие языки, написание программ с определенными требованиями к пространству и времени, а также написание низкоуровневого кода, такого как драйверы устройств и операционные системы. Развитие Rust только что было обеспечено созданием Фонда Rust, межотраслевого органа, направленного на поддержку языка и его разработчиков.
Первым улучшением в новом выпуске является поддержка индексации массивов const-generic. Это часть работы команды над стабильными генераторами const, и, в частности, в этом выпуске добавлены реализации ops::Index и IndexMut для массивов. Оператор индексирования уже работал с массивами с помощью встроенной магии компилятора, но черты библиотеки на самом деле не были реализованы на уровне типов до сих пор.
Также добавлена поддержка повторения значений для массивов. На самом деле это сработало как случайный побочный эффект еще одного изменения после Rust 1.38, но теперь официально включено. Команда говорит, что в будущем, чтобы избежать таких «временных» именованных констант, вы можете рассчитывать на встроенные выражения const.
Поля объединения-это еще одна область, которая была улучшена, и теперь можно безопасно назначать поля объединения вручную. Эта функция была добавлена в рамках более раннего улучшения поддержки Drop для союзов, но вручную Drop
Обработка файла Rust на платформах Unix также была исправлена. Rust рассматривает некоторые недопустимые значения как «нишу», и это пространство может использоваться для оптимизации компоновки типов. На платформах Unix файл Rust просто состоит из целочисленного файлового дескриптора системы, и у этого также есть возможная ниша, потому что он никогда не может быть -1. Эта ниша теперь добавлена в определение типа, чтобы ее можно было использовать при оптимизации макета.
В другом месте в библиотеку были добавлены девять новых стабильных функций, включая различные функции зажима, чтобы ограничить значение определенным интервалом. Ряд других функций были сделаны постоянными.