كيفية استخدام الماكرو بين ملفات الوحدات في 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 يعمل بطريقة خاصة، لكنني لا أفهم كيفية استخدامها بشكل صحيح.