extern crate fooindica que desea vincular con una biblioteca externa y trae el nombre de la caja de nivel superior al alcance (equivalente a use foo). A partir de Rust 2018, en la mayoría de los casos no necesitará usar extern cratemás porque Cargo informa al compilador sobre qué cajas están presentes. (Hay una o dos excepciones )
use bar es una forma abreviada de hacer referencia a símbolos completos.
Teóricamente, el idioma no es necesario use : siempre puedes calificar completamente los nombres, ¡pero escribir std::collections::HashMap.new(...)sería muy tedioso! En su lugar, solo puede escribir use std::collections::HashMapuna vez y luego HashMapse referirá a eso.
extern crate foo;? Las cajas y los módulos son conceptos separados en Rust, es posible que desee echar un vistazo a "Terminología básica: cajas y módulos" que explica la diferencia entre los dos (aunque personalmente encuentro los ejemplos a continuación demasiado detallados).