Hierarquia do Sistema de Arquivos
Omitir o conteúdo do módulo dirá ao Rust para procurá-lo em outro arquivo:
mod garden;
Isso diz ao Rust que o conteúdo do módulo jardim pode ser encontrado em src/jardim.rs. Similarmente, um módulo jardim::vegetais pode ser encontrado em src/jardim/vegetais.rs.
A raiz crate está em:
src/lib.rs(para um crate de biblioteca)src/main.rs(para um crate binário)
Módulos definidos em arquivos também podem ser documentados usando “comentários internos de documento” (inner doc comments). Estes documentam o item que os contém - neste caso, um módulo.
//! Este módulo implementa o jardim, incluindo uma implementação de germinação //! de alto desempenho. // Re-exporta tipos deste módulo. pub use sementes::SementePacote; pub use jardim::Jardim; /// Semeia os pacotes de semente fornecidos. pub fn semear(sementes: Vec<SementePacote>) { todo!() } /// Colhe os vegetais no jardim que está pronto. pub fn colher(jardim: &mut Jardim) { todo!() }
-
Antes do Rust 2018, os módulos precisavam estar localizados em
module/mod.rsao invés demodule.rs, e esta ainda é uma alternativa funcional para edições posteriores a 2018. -
A principal razão para introduzir
nome_de_arquivo.rscomo alternativa anome_de_arquivo/mod.rsfoi porque muitos arquivos denominadosmod.rspodem ser difíceis de distinguir em IDEs. -
O aninhamento mais profundo pode usar pastas, mesmo que o módulo principal seja um arquivo:
src/ ├── main.rs ├── top_module.rs └── top_module/ └── sub_module.rs -
O local no qual o Rust irá procurar por módulos pode ser alterado por meio de uma diretiva de compilador:
#[caminho = "algum/caminho.rs"] mod algum_modulo { }Isto é útil, por exemplo, se você quiser colocar testes para um módulo em um arquivo chamado
algum_modulo_teste.rs, semelhante à convenção em Go.