একই ক্রেটের মধ্যে ম্যাক্রোজ
#[macro_use]
mod foo {
macro_rules! bar {
() => ()
}
}
bar!();
আপনি যদি একই ক্রেটিতে ম্যাক্রোটি ব্যবহার করতে চান তবে আপনার ম্যাক্রোটি যে মডিউলটি সংজ্ঞায়িত হয়েছে তার জন্য গুণকের প্রয়োজন #[macro_use]
।
ম্যাক্রোগুলি কেবল তাদের সংজ্ঞায়িত করার পরে ব্যবহার করা যাবে । এর অর্থ এটি কার্যকর হয় না:
bar!();
#[macro_use]
mod foo {
macro_rules! bar {
() => ()
}
}
ক্রেট জুড়ে ম্যাক্রো
macro_rules!
অন্যান্য ক্রেটগুলি থেকে আপনার ম্যাক্রো ব্যবহার করতে , ম্যাক্রোকে নিজেই গুণকের প্রয়োজন #[macro_export]
। ক্রেট আমদানি করার পরে ম্যাক্রোর মাধ্যমে আমদানি করা যায় use crate_name::macro_name;
।
ক্রেট util
#[macro_export]
macro_rules! foo {
() => ()
}
ক্রেট user
use util::foo;
foo!();
নোট করুন যে ম্যাক্রো সর্বদা ক্রেটের শীর্ষ স্তরে থাকে; তাই এমনকি যদি foo
একটি ভিতরে হবে mod bar {}
, user
বাক্স এখনও লিখতে হবে use util::foo;
এবং না use util::bar::foo;
।
মরিচা 2018 এর আগে আপনাকে বিবৃতিতে বৈশিষ্ট্য যুক্ত করে অন্য ক্রেটগুলি থেকে ম্যাক্রো আমদানি #[macro_use]
করতে হয়েছিল extern crate util;
। যা থেকে সমস্ত ম্যাক্রোগুলি আমদানি করবে util
। বিকল্পভাবে, #[macro_use(cat, dog)]
শুধুমাত্র ম্যাক্রোগুলি cat
এবং আমদানি করতে ব্যবহৃত হতে পারে dog
। এই বাক্য গঠনটি আর প্রয়োজন হবে না।
ম্যাক্রোগুলির উপর দ্য রিস্ট প্রোগ্রামিং ল্যাঙ্গুয়েজ অধ্যায়টিতে আরও তথ্য পাওয়া যায় ।
module::my_macro!()?