ما الفرق بين `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` بناء قديم؟ أم أنه ضروري لحالات خاصة؟ اشرح لي من فضلك مع أمثلة. شكرًا مقدمًا!