use, super, self
Un módulo puede incluir símbolos de otro módulo en el ámbito con use. Normalmente, se ve algo como esto en la parte superior de cada módulo:
use std::collections::HashSet; use std::process::abort;
Rutas
Las rutas se resuelven de la siguiente manera:
-
Como ruta relativa:
foooself::foohacen referencia afooen el módulo corriente,super::foohace referencia afooen el módulo superior.
-
Como ruta absoluta:
crate::foohace referencia afooen la raíz del crate corriente,bar::foohace referencia afooen el cratebar.
-
Es habitual “volver a exportar” los símbolos en una ruta más corta. Por ejemplo, el archivo
lib.rsde nivel superior de un crate puede hacer quemod storage; pub use storage::disk::DiskStorage; pub use storage::network::NetworkStorage;haciendo que
DiskStorageyNetworkStorageestén disponibles para otros crates con una ruta corta y práctica. -
La mayoría de las veces, únicamente deben ser
uselos elementos que aparecen en un módulo. Sin embargo, un trait debe encontrarse dentro del ámbito para llamar a cualquier método de ese trait, incluso aunque ya haya un tipo que implemente dicho trait dentro del ámbito. Por ejemplo, para usar el métodoread_to_stringen un tipo que implemente el traitRead, debes usar std::io::Read`. -
La instrucción
usepuede tener un comodín:use std::io::*. No se recomienda su uso porque no está claro qué elementos se importan y cuáles podrían cambiar con el tiempo.