Макроси
Макроси розгортаються у код 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.
Висновок з цього розділу полягає в тому, що ці загальні зручності існують, і те, як ними користуватися. Чому вони визначені як макроси і на що вони поширюються, не є особливо важливим.
У цьому курсі не розглядається визначення макросів, але в наступному розділі буде описано використання похідних макросів.