typestar

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

  1. $name:expr captura una expresión, :ident un nombre.
  2. Cada regla es un patrón y los tokens a los que se expande.
  3. #[macro_export] la vuelve visible fuera del crate.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Macros; paso 8 de 12 en Módulos, pruebas y macros.

← Anterior Siguiente →