Progrust Library.

// 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 マクロ マクロは手続きマクロの一種です。