Макроси

Макроси розгортаються у код Rust під час компіляції і можуть приймати змінну кількість аргументів. Вони відрізняються символом ! у кінці. До стандартної бібліотеки Rust входить набір корисних макросів.

  • println!(format, ..) виводить рядок у стандартний вивід, застосовуючи форматування, описане у std::fmt.
  • format!(format, ..) працює так само, як println!, але повертає результат у вигляді рядка.
  • dbg!(вираз) записує значення виразу і повертає його.
  • todo!() позначає частину коду як таку, що ще не виконана. Якщо цей код буде виконано, він викличе паніку.
  • unreachable!() позначає ділянку коду як недосяжну. Якщо цей код буде виконано, він викличе паніку.
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.

Висновок з цього розділу полягає в тому, що ці загальні зручності існують, і те, як ними користуватися. Чому вони визначені як макроси і на що вони поширюються, не є особливо важливим.

У цьому курсі не розглядається визначення макросів, але в наступному розділі буде описано використання похідних макросів.