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.rs
ao 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.rs
como alternativa anome_de_arquivo/mod.rs
foi porque muitos arquivos denominadosmod.rs
podem 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.