use, super, self
Um mĂłdulo pode trazer sĂmbolos de outro mĂłdulo para o escopo com use
. Normalmente, vocĂȘ verĂĄ algo assim na parte superior de cada mĂłdulo:
use std::collections::HashSet; use std::process::abort;
Caminhos (Paths)
Caminhos sĂŁo resolvidos da seguinte forma:
-
Como um caminho relativo:
foo
ouself::foo
referem-se Ăfoo
no mĂłdulo atual,super::foo
refere-se Ăfoo
no mĂłdulo pai.
-
Como um caminho absoluto:
crate::foo
refere-se Ăfoo
na raiz do crate atual,bar::foo
refere-se afoo
no cratebar
.
-
Ă comum "re-exportar" sĂmbolos em um caminho mais curto. Por exemplo, o nĂvel superior
lib.rs
em um crate pode termod storage; pub use storage::disk::DiskStorage; pub use storage::network::NetworkStorage;
tornando
DiskStorage
eNetworkStorage
disponĂveis para outros crates com um caminho conveniente e curto. -
Na maior parte, apenas itens que aparecem em um mĂłdulo precisam ser
use
. No entanto, um trait deve estar no escopo para chamar quaisquer métodos nesse trait, mesmo que um tipo que implemente esse trait jå esteja no escopo. Por exemplo, para usar o métodoread_to_string
em um tipo que implementa o traitRead
, vocĂȘ precisause std::io::Read
. -
A instrução
use
pode ter um curinga:use std::io::*
. Isso Ă© desencorajado porque nĂŁo estĂĄ claro quais itens sĂŁo importados, e eles podem mudar ao longo do tempo.