Я пытаюсь написать quine в Rust, используя только макросы.Для этого я встраиваю функцию 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
расширился до того, как был преобразован в строку, чтобы программа была quine.Как я могу это сделать?