ম্যাক্রো

সংকলনের সময় ম্যাক্রোগুলিকে রাস্ট কোডে প্রসারিত করা হয় এবং একটি পরিবর্তনশীল সংখ্যক আর্গুমেন্ট নিতে পারে। ম্যাক্রোর শেষে একটি ! দিয়ে সেটি অন্য কোডের থেকে পার্থক্য করা হয়ে। রাস্ট স্ট্যান্ডার্ড লাইব্রেরিতে দরকারী ম্যাক্রোগুলির একটি ভাণ্ডার অন্তর্ভুক্ত রয়েছে।

  • std::fmt এ বর্ণিত বিন্যাস প্রয়োগ করে println!(format, ..) স্ট্যান্ডার্ড আউটপুটে একটি লাইন প্রিন্ট করে।
  • format!(format, ..) ঠিক println! এর মতো কাজ করে কিন্তু একটি স্ট্রিং হিসেবে ফলাফল প্রদান করে।
  • dbg!(expression) অভিব্যক্তির মান লগ করে এবং সেটিকে ফেরত দেয়।
  • 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.

এই বিভাগ থেকে বোঝা যায় যে এই সাধারণ সুবিধাগুলি বিদ্যমান, এবং কীভাবে সেগুলি ব্যবহার করা যায়। কেন সেগুলি ম্যাক্রো হিসাবে সংজ্ঞায়িত করা আছে, এবং সেগুলি কি প্রসারিত হয়, বিশেষ করে সমালোচনামূলক নয়।

কোর্সটি ম্যাক্রো কিভাবে সংজ্ঞায়িত সেটা আলোচনা করে না, তবে পরবর্তী একটি বিভাগে ডেরাইভ ম্যাক্রোর ব্যবহার বর্ণনা করা হবে।