</>
Plan du cours — 61/66

Macros déclaratives

Avancé
macro_rules! carre {
    ($x:expr) => { $x * $x };
}

macro_rules! hashmap {
    ($($cle:expr => $val:expr),* $(,)?) => {{
        let mut m = std::collections::HashMap::new();
        $( m.insert($cle, $val); )*
        m
    }};
}

let m = hashmap! { "a" => 1, "b" => 2 };

Les macros procédurales (#[derive(...)], #[tokio::main], #[instrument]) sont écrites dans un crate séparé de type proc-macro et manipulent directement le flux de tokens — à réserver aux besoins avancés.