5

我正在尝试仅使用宏在 Rust 中编写一个 quine。为了做到这一点,我将main函数嵌入到宏f1中,并尝试嵌入f1in f2with的文字表示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在被字符串化之前进行扩展,以便程序能够运行。我怎样才能做到这一点?

4

0 回答 0