Ленивые константы вышли из экспериментального состояния

24.12.2025

Типы отложенного вычисления значения получили стабильный статус. Это константы, которые вычисляются при первом обращении, а не при загрузке программы.

Какая была проблема

Задача «вычислить один раз, при первом обращении, из нескольких потоков» на уровне константы решалась только через небезопасный код. Стандартный блокировщик с отложенным значением не был константой, поэтому объявить такую переменную как константу нельзя было.

Обходные пути — изменяемая статическая переменная с ручной блокировкой и без неё в одном — нарушают правила Rust и опасны именно тем, что компилятор на них не смотрит. Ошибка в таком коде проявляется редко и выглядит как повреждение данных из ниоткуда.

Два варианта, чему различаться

Один тип использует блокировку — он подходит, когда значение нужно читать из разных потоков. Второй работает без неё, но тогда обращение возможно только из одного потока, а сам тип нельзя передать в другой.

Различие важно для выбора: в коде, который разделяет значение между потоками, первый тип обязателен, а второй даст ошибку сборки. Обратное — типичная ошибка новичков, и теперь она обнаруживается компилятором.

Зачем это нужно

Ленивые константы применяются для конфигураций, регулярных выражений и больших таблиц, которые не должны вычисляться при загрузке программы, если она их не использует. Это обычный приём в долгоживущих службах: программа запускается и ждёт запросов, а тяжёлые таблицы нужны только при первом обращении.

Оригинал

stabilize lazy_get

Упоминаний: 1 · Просмотров: 2