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).