I'm trying to write a quine in Rust using only macros.
In order to do that, I'm embedding the main function into macro f1, and trying to embed a literal representation of f1 in f2 with stringify!.
Here is my code so far:
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!();
The output is, unsurprisingly:
macro_rules!f1
macro_rules!f2{($x:expr)=>(stringify!($x))}
f1!();
What I need is for f1 to expand before being stringified in order for the program to be quine. How can I do that?