在Rust中将其字符串化之前,如何使宏展开?

时间:2019-03-03 09:44:38

标签: rust rust-macros rust-decl-macros

我试图仅使用宏在Rust中编写一个quine。 为此,我将main函数嵌入到宏f1中,并尝试将f1的文字表示形式与f2一起嵌入stringify!

到目前为止,这是我的代码:

macro_rules!f1{()=>(fn main(){println!("macro_rules!{}\nmacro_rules!f2{{($x:expr)=>(stringify!($x))}}\nf1!();",f2!(f1));})}
macro_rules!f2{($x:expr)=>(stringify!($x))}
f1!();

毫不奇怪,输出是:

macro_rules!f1
macro_rules!f2{($x:expr)=>(stringify!($x))}
f1!();

我需要的是f1在被字符串化之前先进行扩展,以使该程序成为奎因。我该怎么办?

0 个答案:

没有答案