उसी टोकरे के भीतर मैक्रों
#[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;
।
Rust 2018 से पहले, आपको स्टेटमेंट में विशेषता जोड़कर मैक्रो को अन्य बक्से से आयात #[macro_use]
करना होगा extern crate util;
। इससे सभी मैक्रोज़ आयात होंगे util
। वैकल्पिक रूप से, #[macro_use(cat, dog)]
केवल मैक्रोज़ आयात करने के लिए इस्तेमाल किया जा सकता है cat
और dog
। यह वाक्यविन्यास अब आवश्यक नहीं होना चाहिए।
मैक्रों पर द रस्ट प्रोग्रामिंग लैंग्वेज चैप्टर में अधिक जानकारी उपलब्ध है ।
module::my_macro!()?