Статья

Подробный обзор обновления Rust 1.88.0: Упрощенные let-цепочки и автоматическая очистка кэша

Недавно была выпущена стабильная версия Rust 1.88.0, которая принесла несколько очень практичных обновлений.

1280X1280.PNG

Прежде чем мы углубимся в новые возможности, давайте поговорим о том, как обновиться. Откройте ServBay, найдите Rust в разделе «Пакеты» (Packages) и нажмите оранжевую кнопку обновления. Это избавит вас от необходимости вводить команды и решать проблемы с окружением. Если вы хотите упростить этот процесс, возможно, вам стоит попробовать ServBay.

Итак, давайте посмотрим, что нового в Rust 1.88.0.

Основные новые возможности

Let-цепочки (Let Chains): Делаем условный код чище

Если вы уже писали на Rust, то, вероятно, сталкивались с проблемой глубоко вложенных конструкций if let. Чтобы извлечь значение из вложенного enum или struct, код становится многоуровневым и трудным для чтения.

Раньше мы могли бы написать это так:

// Прежний подход, глубокая вложенность
if let Channel::Stable(v) = release_info() {
    if let Semver { major, minor, .. } = v {
        if major == 1 && minor == 88 {
            println!("Требуется несколько уровней для завершения проверки...");
        }
    }
}

Теперь эту проблему решают let-цепочки (let chains), появившиеся в версии 1.88.0. Они позволяют объединять несколько привязок let и логических условий в одной инструкции if или while с помощью &&.

Теперь вы можете написать это так:

// С использованием let-цепочек код становится гораздо более плоским
if let Channel::Stable(v) = release_info()
    && let Semver { major, minor, .. } = v
    && major == 1 && minor == 88
{
    println!("let_chains делают логику намного понятнее.");
}

Как видите, логика кода становится более линейной и гораздо более читаемой.

Стоит отметить, что для использования let-цепочек требуется редакция Rust 2024 (Rust 2024 Edition), поэтому, если вы хотите их использовать, не забудьте обновить редакцию в вашем Cargo.toml.

Автоматическая очистка кэша Cargo: Решение проблемы с дисковым пространством

Каждый, кто пользуется Rust достаточно долго, знает, что каталог ~/.cargo может сильно разрастаться, поскольку в нем кэшируются все загруженные зависимости. Со временем он может занимать десятки гигабайт дискового пространства, требуя ручной очистки.

Версия 1.88.0 наконец-то включает встроенную функцию автоматической очистки кэша, которую я нахожу очень полезной. Правила очистки просты:

  • Зависимости, загруженные из реестров, будут удалены, если они не использовались в течение 3 месяцев.
  • Локальные зависимости (например, из Git) будут удалены, если они не использовались в течение 1 месяца.

С этой функцией нам больше не нужно беспокоиться о том, что кэш Cargo занимает слишком много места на диске.

«Голые» функции (Naked Functions)

Для разработчиков, занимающихся низкоуровневыми задачами, такими как написание ядер операционных систем или встраиваемых программ, добавленные «голые» функции (#[naked]) — это полезная новая возможность. Они позволяют разработчикам писать функции, тело которых полностью состоит из встраиваемого ассемблера, поскольку компилятор не будет добавлять никакого дополнительного ассемблерного кода (например, пролог и эпилог функции). Это обеспечивает полный контроль над реализацией функции, что крайне важно в определенных сценариях.

Прочие обновления

Также есть несколько небольших, но полезных обновлений, таких как:

  • Логические конфигурации: Теперь вы можете писать cfg(true) или cfg(false) непосредственно в атрибутах cfg, что более интуитивно понятно, чем прежний вариант cfg(all()).
  • Стабилизация API: Была стабилизирована целая группа API, включая HashMap::extract_if и Cell::update, и теперь они готовы к использованию в ваших проектах.

Как обновиться до Rust 1.88.0 с помощью ServBay

Я уже упоминал, что использую ServBay для управления версиями. Вот конкретные шаги, которые действительно просты:

  1. Откройте приложение ServBay.
  2. Найдите «Пакеты» (Packages) в боковой панели слева.
  3. Вы увидите Rust в списке языков. Нажмите оранжевую кнопку обновления рядом с ним.

09819da0-484a-4cb2-9cf6-8635c14f7ee5.png

Если у вас еще не установлен ServBay и вы хотите его попробовать, вы можете скачать его с официального сайта (https://www.servbay.com).
После загрузки перейдите в «Пакеты» (Packages) в боковой панели слева, найдите Rust и нажмите зеленую кнопку загрузки, чтобы установить его.

bb77eb29-ce66-411c-bef9-9d8e4994860b.png

Весь процесс управляется через графический интерфейс, без необходимости использовать командную строку. Основные причины, по которым мне нравится использовать ServBay:

  • Управление через GUI: Это избавляет от необходимости запоминать и вводить команды, что особенно удобно, когда вы переключаетесь между несколькими языками (например, Python и Go) и хотите иметь единый интерфейс управления.
  • Изоляция окружений: Различные версии инструментов и языков могут сосуществовать, не мешая друг другу, что упрощает настройку окружений для разных проектов.

Итоги

В целом, Rust 1.88.0 — это очень практичный релиз. Такие функции, как let-цепочки и автоматическая очистка кэша Cargo, напрямую решают распространенные проблемы, с которыми сталкиваются разработчики в повседневной работе, значительно улучшая их опыт.

Если вы хотите без лишних хлопот опробовать эти новые возможности, я рекомендую попробовать ServBay для установки и управления окружением Rust. Так вы сможете тратить больше времени на написание кода и меньше — на борьбу с окружением. Надеюсь, эта статья была для вас полезной.

Для ответа вы можете авторизоваться