¿Cuál es la diferencia entre `use` y `extern crate` en Rust?
¡Hola! Empecé a estudiar Rust recientemente y me confundí con los imports. En algunos ejemplos veo `extern crate`, y en otros, `use`. Por ejemplo, escribo un programa simple que usa el crate `rand` para generar números aleatorios:
```rust
// Opción 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úmero aleatorio: {}", n);
}
```
Pero también he visto código donde `extern crate` no se usa en absoluto, y directamente escriben `use`:
```rust
// Opción 2
use rand::Rng;
fn main() {
let mut rng = rand::thread_rng();
let n: u32 = rng.gen_range(1..101);
println!("Número aleatorio: {}", n);
}
```
Ambas opciones funcionan, pero no entiendo cuál es la diferencia. ¿Cuándo se debe escribir `extern crate` y cuándo es suficiente solo `use`? ¿Quizás `extern crate` es una construcción obsoleta? ¿O es necesaria para algún caso especial? Explíquenme, por favor, con ejemplos. ¡Gracias de antemano!