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 typeproc-macroet manipulent directement le flux de tokens — à réserver aux besoins avancés.