Avatar ·

ما الفرق بين use و extern crate في Rust؟ متى نستخدم كلًا منهما؟

مرحبًا أيها الزملاء! لقد بدأت مؤخرًا في تعلم Rust وأشعر بالحيرة تجاه بنيتين أساسيتين: `use` و `extern crate`. في التوثيق مكتوب أن كلاهما مرتبط بالاستيراد، لكنني لا أفهم متى أستخدم أيًا منهما. إليك الكود الخاص بي: ```rust // هذا يعمل extern crate rand; use rand::Rng; fn main() { let secret_number = rand::thread_rng().gen_range(1..101); println!("الرقم السري: {}", secret_number); } ``` لكن إذا كتبت هكذا بدون `extern crate`: ```rust use rand::Rng; fn main() { let secret_number = rand::thread_rng().gen_range(1..101); println!("الرقم السري: {}", secret_number); } ``` يشتكي المترجم: `can't find crate for rand`. إذن لماذا نحتاج `use` إذا كان بدون `extern crate` لا يعمل شيء؟ والعكس صحيح — إذا كتبت فقط `extern crate rand`، فإن الدالة `gen_range` لن تكون متاحة بدون `use`. كما رأيت أنه في بعض المشاريع (مثل Rust 2018) لا يكتب الناس `extern crate` على الإطلاق، بل يستخدمون `use` فقط. لماذا؟