Avatar ·

Quelle est la différence entre `use` et `extern crate` en Rust ? Quand utiliser quoi ?

Salut, collègues ! J'ai récemment commencé à apprendre Rust et je me suis embrouillé avec deux constructions clés : `use` et `extern crate`. Dans la documentation, il est écrit qu'elles sont toutes deux liées à l'importation, mais je ne comprends pas quand appliquer l'une ou l'autre. Voici mon code : ```rust // Cela fonctionne extern crate rand; use rand::Rng; fn main() { let secret_number = rand::thread_rng().gen_range(1..101); println!("Nombre secret : {}", secret_number); } ``` Mais si j'écris comme ça, sans `extern crate` : ```rust use rand::Rng; fn main() { let secret_number = rand::thread_rng().gen_range(1..101); println!("Nombre secret : {}", secret_number); } ``` Le compilateur se plaint : `can't find crate for rand`. Pourquoi `use` est-il nécessaire si sans `extern crate` rien ne fonctionne ? Et inversement — si j'écris seulement `extern crate rand`, la fonction `gen_range` ne sera pas accessible sans `use`. J'ai aussi vu que dans certains projets (par exemple, sur Rust 2018), les gens n'écrivent pas du tout `extern crate`, mais utilisent simplement `use`. Pourquoi ?