Использование внутренних правил в макросах Rust 2.0 - PullRequest
0 голосов
/ 15 октября 2018

Я не могу понять, где были определены значения @TAIL и @MAKE для lazy-static и их конкретные случаи использования.

Если я понял внутренние правила правильно, основное использование @as_expr в этом примере состоит в том, чтобы скрыть as_expr! (или вообще ранее определенные макросы) от экспорта, т.е. это способ изменения глобального пространства имен макросов.После этого @TAIL или @MAKE уже должен быть макросом, а я не могу найти их в lazy_static source .

1 Ответ

0 голосов
/ 15 октября 2018

Вы связаны с определениями.@TAIL прямо на три строки ниже 137, @MAKE - на 162.

@name не является чем-то особенным.Там абсолютно нет особого поведения.Это просто последовательность токенов, которые не могут отображаться в «нормальном» коде, и, следовательно, вряд ли будут случайно сопоставлены с другими правилами.@as_expr не скрывает макрос as_expr!, он используется вместо определения общедоступного макроса as_expr!.

...