Команда Rust рада сообщить о выпуске новой версии, 1.43.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если вы установили предыдущую версию Rust средствами rustup
, то для обновления до версии 1.43.0 вам достаточно выполнить следующую команду:
rustup update stable
Если у вас ещё не установлен rustup
, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.
Что вошло в стабильную версию 1.43.0
Значительных изменений и нововведений этот релиз не содержит. Мы стабилизировали несколько новых API, улучшили производительность компилятора и добавили некоторые изменения в систему макросов. Для более подробной информации смотрите подробные примечания к выпуску.
Фрагменты item
Теперь вы можете использовать фрагменты item
, встраивая их в тело типажей, реализаций или внешних блоков. Например:
macro_rules! mac_trait {
($i:item) => {
trait T { $i }
}
}
mac_trait! {
fn foo() {}
}
Этот вызов сгенерирует следующий код:
trait T {
fn foo() {}
}
Вывод типов для примитивов
Был улучшен вывод типов для примитивов, ссылок и бинарных операций. Например, следующий код не компилируется в Rust 1.42, но соберётся в Rust 1.43.
let n: f32 = 0.0 + &0.0;
Rust 1.42 выдаёт ошибку "casting &f64
as f32
is invalid — cannot cast &f64
as f32
". Начиная с этого выпуска алгоритм правильно выводит тип операндов — f32
.
Новая переменная окружения Cargo для тестов
Чтобы помочь в проведении интеграционного тестирования, Cargo теперь устанавливает новую переменную окружения.
Это легче всего объяснить на примере: допустим, мы работаем над консольным проектом, назовём его "cli". В интеграционных тестах мы хотим запустить cli
и посмотреть на результат его работы. Во время выполнения тестов и бенчмарков Cargo устанавливает переменную окружения с именем CARGO_BIN_EXE_cli
, которую мы можем использовать в нашем тесте:
let exe = env!("CARGO_BIN_EXE_cli");
cli
становится легче вызвать, ведь теперь у нас в распоряжении его полный путь.
Изменения в библиотеке
Мы можем напрямую использовать константы, ассоциированные с целыми числами и числами с плавающей точкой, вместо того, чтобы импортировать модуль. Теперь мы можем писать u32::MAX
или f32::NAN
без use std::u32;
и use std::f32;
.
Также добавлен новый модуль primitive
, реэкспортирующий примитивные типы Rust. Он может пригодиться в написании макросов, чтобы быть уверенным, что типы не будут затенены.
Ещё мы стабилизировали шесть новых API:
Другие изменения
Синтаксис, пакетный менеджер Cargo и анализатор Clippy также претерпели некоторые изменения.
Участники 1.43.0
Множество людей собрались вместе, чтобы создать Rust 1.43.0. Мы не смогли бы сделать это без всех вас, спасибо!
От переводчиков
С любыми вопросами по языку Rust вам смогут помочь в русскоязычном Телеграм-чате или же в аналогичном чате для новичковых вопросов.
Данную статью совместными усилиями перевели andreevlex, funkill, Hirrolot, l4l, H. K. и blandger.