Как сделать макрокоманду развернутой перед тем, как ее упорядочить в Rust? - PullRequest
0 голосов
/ 03 марта 2019

Я пытаюсь написать 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.Как я могу это сделать?

...