この記事は Rustその3 Advent Calendarの10日目の記事です。空いていたのでちょっとしたツールをご紹介します。 Rustのマクロについて Rustのマクロは、Rustの他の要素と比べて変わった文法なので最初は戸惑うかもしれません。しかし、やっていることは「どういう構文にマッチするのかを定義する」「その構文がコンパイル時にどう変換されるか定義する」の2つです。このうち、前者の「どういう構文にマッチするのか」がイメージしやすくなれば、マクロを書きやすくなるでしょう。というわけで、この部分を可視化します。 railroadは、その名の通り鉄道の線路のようにマクロの構文を可視化してくれます。ありがたいことに、Webブラウザで動くデモがありますので、以下から使わせてもらいます。 試しに、頻繁に使うマクロであるvec!を可視化してみます。vec!の定義は以下の通りです。置換後の内容は