Процедурные макросы могут получить значение числового литерала

08.06.2026

У числового литерала в процедурных макросах появились методы получения значения. Раньше это приходилось делать обходным путём.

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

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

Копирование внутреннего кода — плохой выход по простой причине: оно переписывается при каждом изменении компилятора. Крейты, которые это делают, ломаются на каждом обновлении и вынуждены его обходить.

Что добавлено

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

Кому это нужно

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

Оригинал

add _value API for number literals in proc-macro

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