Makrolar

Makrolar, derleme sırasında Rust koduna genişletilir ve değişken sayıda argüman alabilir. Sonunda ! işaretiyle ayırt edilirler. Rust standart kütüphanesi çeşitli yararlı makrolar içerir.

  • println!(format, ..), std::fmt'de açıklanan biçimi uygulayarak standart çıktıya bir satır yazdırır.
  • format!(format, ..) tıpkı println! gibi işler ancak sonucu bir dize (string) olarak geri döndürür.
  • dbg!(expression) ifadenin değerini kayıt tutar (loggging) ve onu geri döndürür.
  • todo!() kodun bir kısmını henüz uygulanmamış (not-yet-implemented) olarak işaretler. Eğer yürütülürse (execute), paniğe neden olur.
  • unreachable!() kodun bir kısmını erişilemez (unreachable) olarak işaretler. Eğer yürütülürse, paniğe neden olur.
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.

Bu bölümden çıkarılacak sonuç, bu ortak kolaylıkların mevcut olduğu ve bunların nasıl kullanılacağıdır. Bunların neden makro olarak tanımlandığı ve neye genişledikleri özellikle kritik değildir.

Kurs, makroların tanımlanmasını (define) kapsamaz, ancak daha sonraki bir bölümde türetilmiş makroların kullanımı anlatılacaktır.