Вышел Rust 1.85: обзор ключевых нововведений и улучшений

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Вышел Rust 1.85: что изменилось в новом релизе

Команда разработчиков Rust представила очередное стабильное обновление языка — версию 1.85. Этот релиз приносит ряд долгожданных возможностей, которые упрощают написание асинхронного кода, улучшают производительность и расширяют инструментарий разработчика. Рассмотрим ключевые изменения.

Стабилизация async closures

Одним из главных событий стала стабилизация async closures — замыканий, которые могут быть асинхронными. Ранее для возврата асинхронного замыкания приходилось вручную писать сложные сигнатуры с impl Future. Теперь компилятор поддерживает синтаксис:

  • async || { ... } — прямое объявление асинхронного замыкания.
  • Автоматическое замыкание переменных с поддержкой lifetime.
  • Совместимость с трейтами FnOnce, FnMut и Fn.

Это упрощает написание асинхронных обработчиков событий, middleware и callback-функций в веб-фреймворках (например, Axum или Actix).

Улучшенный borrow checker

В Rust 1.85 значительно усовершенствован анализатор заимствований. Теперь он лучше понимает случаи, когда переменная используется после частичного перемещения:

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

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

Новые возможности макросов

Релиз включает расширение системы макросов (proc macros):

  • Добавлена поддержка token streams с возможностью модификации позиций в исходном коде.
  • Упрощено создание атрибутных макросов для структур и перечислений.
  • Улучшена обработка ошибок внутри макросов — теперь сообщения отображаются с точным указанием строки в пользовательском коде.

Это сделает разработку библиотек для сериализации (serde), веб-маршрутизации и генерации кода более гибкой.

Оптимизация компилятора и улучшения в cargo

Разработчики продолжили работу над производительностью компиляции:

  • Ускорена инкрементальная компиляция для крупных проектов (до 15% быстрее).
  • В cargo check добавлена поддержка параллельного анализа зависимостей.
  • В cargo build улучшено кэширование промежуточных артефактов.

Также в cargo появилась новая команда cargo info, которая показывает подробную информацию о пакете из реестра (версии, зависимости, лицензию) без необходимости его скачивания.

Исправления безопасности и стабильность

В версии 1.85 закрыто несколько уязвимостей, связанных с обработкой небезопасного кода (unsafe). Исправлены ошибки в работе с памятью при использовании std::mem::transmute и MaybeUninit. Команда Rust рекомендует всем пользователям обновиться для обеспечения безопасности проектов.

Как обновиться

Обновление доступно через официальный установщик rustup. Чтобы установить новую версию, выполните команду:

Рекомендуем библотеки