このエントリは Rustその2 Advent Calendar 2018の19日目のの記事です。時空を遡って書いています。 κeenです。 マクロのためのユーティリティマクロを書いていると呼び出しをネストしたくなりますが、簡単には実現できないのでそれについて。 あるいは過去記事の前半と後半のギャップについて。 TL;DR: CPSする 例えば構造体定義をラップしてそれをJSON風に出力するメソッドを生やすマクロを考えてみましょう。 こんなのです。 macro_rules! json { (struct $name: ident { $($field: ident : $ty: ty,)* }) => { struct $name { $($field: $ty),+ } impl $name { fn print_json(&self) { println!("{{"); $( print
