Avatar ·

¿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é?