Rustのマクロ
コンパイル時に型チェックより前に展開される
パターンマッチを使う
!が付いているものはマクロ
マクロはコンパイルの初期段階で評価され、展開される
rustの関数は、可変個の引数をサポートしていない
マクロは可能
デバッグビルド時のみ展開されるマクロなどもある
debug_assert_eq!とか
マクロを作る
code:rs
macro_rules! foo {
($hoge:disanator) => (templae1) // こんな形式
($x:expr) => { println!("{}", $x); } // 例えばこんな感じ
}
foo!()
disanator
何にマッチするかを指定する
expt, stmt, pat, tyなど予め用意されたもののなから適切なものを選んで使う ref 例
code:rs
macro_rules! foo {
($x:expr) => { println!("{}", $x); }
}
foo!(1 + 2); // println!("{}", 1 + 2);
参考