macro_rules! en Rust
Una macro declarativa coincide patrones de sintaxis y se expande a código.
macro_rules! square {
($n:expr) => {
$n * $n
};
}
macro_rules! named_total {
($label:ident : $($value:expr),+) => {{
let total = 0 $(+ $value)+;
format!("{} = {}", stringify!($label), total)
}};
}
fn main() {
println!("{}", square!(7));
println!("{}", square!(1.5));
println!("{}", named_total!(stars: 3, 2, 1));
}
Cómo funciona
$name:exprcaptura una expresión,:identun nombre.- Cada regla es un patrón y los tokens a los que se expande.
#[macro_export]la vuelve visible fuera del crate.
Palabras clave y builtins usados aquí
fnlet
El intento, en números
- Líneas
- 18
- Caracteres a escribir
- 316
- Tokens
- 115
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 63 segundos.
Paso 2 de 3 en Macros; paso 8 de 12 en Módulos, pruebas y macros.