Macros
Macros são expandidas em código Rust durante a compilação e podem receber um número variável de argumentos. Elas são distinguidas por um !
no final. A biblioteca padrão do Rust inclui uma variedade de macros úteis.
println!(format, ..)
imprime uma linha na saída padrão, aplicando a formatação descrita emstd::fmt
.format!(format, ..)
funciona exatamente comoprintln!
, mas retorna o resultado como uma string.- dbg!(expressão) registra o valor da expressão e o retorna.
todo!()
marca um trecho de código como não implementado. Se executado, gerará um pânico.unreachable!()
marca um trecho de código como inalcançável. Se executado, gerará um pânico.
fn factorial(n: u32) -> u32 { let mut product = 1; for i in 1..=n { product *= dbg!(i); } product } fn fizzbuzz(n: u32) -> u32 { todo!() } fn main() { let n = 4; println!("{n}! = {}", factorial(n)); }
This slide should take about 2 minutes.
A lição desta seção é que essas conveniências comuns existem e como usá-las. Por que elas são definidas como macros e no que elas se expandem não é especialmente crítico.
O curso não cobre a definição de macros, mas uma seção posterior descreverá o uso de macros derive (derivadas).