Как проверить, начинается ли идентификатор в макросе с подчеркивания?
Мне нужно проверить, начинается ли идентификатор с подчеркивания. Это не работает:
#[macro_export]
macro_rules! UNDECORED {
(_$_i:ident) => {... do something if underscored};
($_i:ident) => {... do something else};
}
Где ошибка?
1 ответ
Решение
Макросы получают "токены" в качестве входных данных; нижнее подчеркивание не является отдельным токеном, и вы не можете сопоставить частичные токены.
Вы могли бы stringify!
идентификатор и соответствует имя во время выполнения.