¿Cuál es la diferencia entre use y extern crate en Rust? ¿Cuándo usar cada uno?
¡Hola, colegas! Recientemente comencé a aprender Rust y me confundí con dos construcciones clave: `use` y `extern crate`. En la documentación dice que ambas están relacionadas con la importación, pero no entiendo cuándo aplicar cada una.
Aquí está mi código:
```rust
// Esto funciona
extern crate rand;
use rand::Rng;
fn main() {
let secret_number = rand::thread_rng().gen_range(1..101);
println!("Número secreto: {}", secret_number);
}
```
Pero si escribo así, sin `extern crate`:
```rust
use rand::Rng;
fn main() {
let secret_number = rand::thread_rng().gen_range(1..101);
println!("Número secreto: {}", secret_number);
}
```
El compilador se queja: `can't find crate for rand`. ¿Para qué sirve entonces `use`, si sin `extern crate` nada funciona? Y al revés — si escribo solo `extern crate rand`, la función `gen_range` no estará disponible sin `use`.
También he visto que en algunos proyectos (por ejemplo, en Rust 2018) la gente no escribe `extern crate` en absoluto, sino que simplemente usan `use`. ¿Por qué?