// dictionary
マクロ.
マクロ
マクロは、Rust のメタプログラミング機能です。コンパイル時にコードを生成することで、複雑な処理の記述を簡潔にできます。
標準マクロの使用例
fn main() {
println!("Hello"); // マクロ呼び出し(! が目印)
vec![1, 2, 3]; // ベクタ生成マクロ
}
宣言的マクロ(macro_rules)
macro_rules! vec_init {
($($element:expr),*) => {
{
let mut v = Vec::new();
$(v.push($element);)*
v
}
};
}
fn main() {
let v = vec_init!(1, 2, 3);
}
パターンマッチ的なマクロ定義
macro_rules! log {
($fmt:expr) => {
println!($fmt);
};
($fmt:expr, $($args:expr),*) => {
println!($fmt, $($args),*);
};
}
手続きマクロ
より高度なコード生成には手続きマクロ(procedural macros)を使用します。別のクレートで定義され、内部ではTokenStreamを操作します。
Derive マクロ マクロは手続きマクロの一種です。