Avatar ·

كيفية استخدام الماكرو بين ملفات الوحدات في Rust؟

مرحباً بالجميع! أنا مبتدئ في Rust وواجهت مشكلة عند محاولة استخدام الماكرو في ملفات مختلفة من مشروعي. لدي مكتبة بهيكل وحدات، وأريد تعريف ماكرو في ملف وحدة واحد ثم استخدامه في ملف آخر. إليك هيكل مشروعي المبسط: ``` src/ ├── main.rs ├── macros.rs └── utils/ └── mod.rs ``` في ملف `macros.rs` قمت بتعريف ماكرو بسيط: ```rust macro_rules! say_hello { () => { println!("Hello from macro!"); }; } ``` ثم في `main.rs` قمت بتضمين الوحدات هكذا: ```rust mod macros; mod utils; fn main() { say_hello!(); // يعمل! utils::do_something(); } ``` أما في `utils/mod.rs` أحاول استدعاء نفس الماكرو: ```rust pub fn do_something() { say_hello!(); // خطأ: لم يتم العثور على الماكرو } ``` المترجم يعطي خطأ `error: cannot find macro 'say_hello' in this scope`. قرأت أن الماكرو في Rust يعمل بطريقة خاصة، لكنني لا أفهم كيفية استخدامها بشكل صحيح.