Hierarquia do Sistema de Arquivos
Omitir o conteúdo do módulo dirá ao Rust para procurá-lo em outro arquivo:
mod garden;
Isto diz ao Rust que o conteúdo do módulo garden é encontrado em src/garden.rs. Da mesma forma, um módulo garden::vegetables pode ser encontrado em src/garden/vegetables.rs.
A raiz do 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 (_garden_), incluindo uma implementação de germinação //! de alto desempenho. // Re-exporta tipos deste módulo. pub use garden::Garden; pub use seeds::SeedPacket; /// Semeia os pacotes de semente fornecidos. pub fn sow(seeds: Vec<SeedPacket>) { todo!() } /// Colhe os vegetais no jardim que está pronto. pub fn harvest(garden: &mut Garden) { 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:
#[path = "algum/caminho.rs"] mod some_module;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.