Is it possible to generate declarative macro tokens using quote?

96 Views Asked by At

I am writing some code to emit a declarative macro, and as you know, a decl macro is an Ident followed by a bang !, followed by a Group of non-Rust tokens. I want to generate this macro via code, but if I write my_macro! to the TokenStream via the quote! macro, it treats my_macro as an Ident and inserts a space between that and the !, making my emitted code (valid as pointed in the comments). I would still prefer to omit the whitespace. Is there a workaround this as I can feel that this problem will creep up again when I am writing the body of the decl macro.

PS: I have tried writing and Ident::new("my_macro") and a Punct::new('!', Spacing::Joint) but that didn't help.

1

There are 1 best solutions below

0
On

The easy way is to create a syn::Macro and use its ToTokens implementation.