マクロはコードを書くためのコード(メタプログラミング)です。コード(code)を生成する(generate)ので*_codegen
という名前でクレートが提供されてたりします。マクロを使うと何度も記述しなければ行けないような部分を1箇所にまとめて効率よくコードを書くことができます。
(難しいのでまだ理解と中身が不十分です🙇)
マクロはmacro_rules! <name>
で宣言します。例えばmacro_rules! foo {}
で作ったマクロはfoo!
で呼び出せます。
例えば以下のマクロは、実行時にprintln!(...)
というコードに置き換わるマクロです。
macro_rules! printlnprintln {
( $($x:expr),* ) => {
println!($($x),*);
};
}
// printlnprintln!("{} {}", "I'm", "nju33");
// → println!("{} {}", "I'm", "nju33");
TBW