巨集

巨集會在編譯期間展開為 Rust 程式碼,並可接受可變數量的引數。我們可透過結尾的 ! 來辨別巨集。Rust 標準程式庫包含各式實用巨集。

  • println!(format, ..) prints a line to standard output, applying formatting described in std::fmt.
  • format!(format, ..) 的運作方式與 println! 類似,但會以字串形式傳回結果。
  • dbg!(expression) 會記錄並傳回運算式的值。
  • todo!() 可將一小段程式碼標示為尚未實作,但執行後會發生恐慌。
  • unavailable!() 可將一小段程式碼標示為無法存取,但執行後會發生恐慌。
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.

本節的重點在於,上述的便利性不僅常見,而且確實存在,學員需瞭解如何運用。至於為何將便利性定義為巨集,以及巨集展開後會變成什麼內容,則沒有那麼重要。

本課程不會探討如何定義巨集,但後續章節將說明衍生巨集的用法。