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

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

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

Начать курс

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

Команда разработчиков Rust представила очередной стабильный релиз — версию 1.80.0. Это обновление привносит несколько долгожданных функций, стабилизирует ряд API и улучшает пользовательский опыт. Давайте разберёмся, что изменилось и как эти нововведения повлияют на разработку.

Стабилизация LazyCell и LazyLock

Пожалуй, самое заметное новшество — стабилизация типов LazyCell и LazyLock. Ранее для ленивой инициализации данных приходилось использовать сторонние крейты (например, once_cell) или сложные конструкции.

  • LazyCell — неблокирующая ленивая инициализация для однопоточного контекста. Позволяет отложить создание значения до первого обращения.
  • LazyLock — потокобезопасная версия, использующая мьютекс для синхронизации доступа. Идеально подходит для глобальных конфигураций и синглтонов.

Оба типа реализуют трейты Deref и DerefMut, что делает их удобными в использовании. Теперь стандартная библиотека покрывает наиболее частые сценарии ленивой инициализации.

Стабилизация API: Exclusive и другие

В версии 1.80 стабилизирован ряд новых API:

  • Exclusive — обёртка для исключительного доступа к значению. Позволяет безопасно работать с не-Send типами в асинхронном контексте, предоставляя синхронный доступ через замыкание.
  • Методы BorrowedBuf::as_slice и BorrowedCursor::as_slice — упрощают работу с буферами ввода-вывода.
  • HashMap::extract_if и HashSet::extract_if — итераторы, позволяющие удалять элементы из коллекции по предикату, забирая их владение.

Улучшения компилятора

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

  • Улучшенные диагностики для ошибок, связанных с типами, реализующими Drop.
  • Более понятные сообщения при конфликтах импортов.
  • Оптимизация времени компиляции для проектов, использующих макросы.

Что это значит для разработчиков?

Обновление до Rust 1.80 рекомендуется всем, кто активно использует ленивую инициализацию или работает с асинхронным кодом. Стабилизация LazyLock позволяет отказаться от внешних зависимостей, упрощая сборку и повышая безопасность. Новые методы для коллекций делают код более идиоматичным, а улучшенная диагностика компилятора ускоряет отладку.

Для пользователей PythonLib, которые изучают Rust или используют его в связке с Python (например, через PyO3), это обновление также важно: стабильные API и улучшенная производительность компилятора делают Rust ещё более привлекательным для системного программирования и высоконагруженных сервисов.

Полный список изменений доступен в официальных примечаниях к релизу. Обновить Rust можно командой rustup update stable.

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