Avatar ·

ما الفرق بين `use` و `extern crate` في Rust؟

مرحبًا! بدأت تعلم Rust مؤخرًا وأصبحت مرتبكًا بشأن الاستيرادات. في بعض الأمثلة أرى `extern crate` وفي أخرى `use`. على سبيل المثال، أكتب برنامجًا بسيطًا يستخدم crate `rand` لتوليد أرقام عشوائية: ```rust // الخيار 1 extern crate rand; use rand::Rng; fn main() { let mut rng = rand::thread_rng(); let n: u32 = rng.gen_range(1..101); println!("الرقم العشوائي: {}", n); } ``` لكني رأيت أيضًا كودًا لا يُستخدم فيه `extern crate` على الإطلاق، بل يُكتب `use` مباشرة: ```rust // الخيار 2 use rand::Rng; fn main() { let mut rng = rand::thread_rng(); let n: u32 = rng.gen_range(1..101); println!("الرقم العشوائي: {}", n); } ``` كلا الخيارين يعملان، لكنني لا أفهم الفرق. متى يجب كتابة `extern crate` ومتى يكفي `use` فقط؟ هل `extern crate` بناء قديم؟ أم أنه ضروري لحالات خاصة؟ اشرح لي من فضلك مع أمثلة. شكرًا مقدمًا!