ماکروها
ماکروها در طول کامپایل به کد Rust گسترش مییابند و میتوانند تعداد متغیری از آرگومانها را بگیرند. آنها در پایان با یک «!» متمایز می شوند. کتابخانه استاندارد Rust شامل مجموعه ای از ماکروهای مفید است.
println!(format, ..)
یک خط را در خروجی استاندارد چاپ می کند و قالب بندی شرح داده شده در [std::fmt
] (https://doc.rust-lang.org/std/fmt/index.html) را اعمال می کند. .format!(format, ..)
درست مانندprintln!
کار می کند، اما نتیجه را به صورت یک رشته برمی گرداند.dbg!(expression)
مقدار عبارت را ثبت کرده و آن را برمی گرداند.todo!()
مقداری از کد را به عنوان هنوز پیادهسازی نشده علامتگذاری میکند. panic می کند.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.
نکته مهم این بخش این است که این امکانات مشترک و نحوه استفاده از آنها وجود دارد. اینکه چرا آنها به عنوان ماکرو تعریف می شوند و به چه چیزی گسترش می یابند، بسیار مهم نیست.
این دوره شامل تعریف ماکروها نمی شود، اما در بخش بعدی استفاده از ماکروهای مشتق شده توضیح داده خواهد شد.