Побег знака доллара $ в macro_rules

Как я могу избежать знака доллара для такого макроса?

macro_rules! test {
    ($ $name:ident) => {
        println!(stringify!($name));
    };
}

fn main() {
    test!($abc);
}

Я хочу получить abc. Я пробовал использовать $$ и множество возможных способов избежать этого, но ничего не могу найти. Все, что я могу найти в этом Интернете, это использовать $$ для экранирования метапеременных и выдает ошибку. Могу ли я как-то использовать литеральный тип?

Вот что я пробовал: $$\$_$$_$$:literal$$:literal

Обратная косая черта перед этим работает?

Samathingamajig 22.11.2022 01:35

@Samathingamajig, Нет... Я бы хотел.

Jack 22.11.2022 01:36
macro_rules! может иметь $ в качестве зарезервированного символа, возможно, вам придется написать собственный макрос с нуля, если вы хотите использовать литерал $
Samathingamajig 22.11.2022 01:37

Вы можете записать это как tt, но это не требует доллара.

Chayim Friedman 22.11.2022 01:40
Почему Python в конце концов умрет
Почему Python в конце концов умрет
Последние 20 лет были действительно хорошими для Python. Он прошел путь от "просто языка сценариев" до основного языка, используемого для написания...
3
4
89
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Согласно справочнику Rust,

Символ $ не может быть сопоставлен или транскрибирован буквально.

https://doc.rust-lang.org/reference/macros-by-example.html#transcribing

Другие вопросы по теме