Avatar ·

¿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!