Visibilidade
Módulos são limitadores de privacidade:
- Itens do módulo são privados por padrão (ocultam detalhes de implementação).
- Itens paternos e fraternos são sempre visíveis.
- Em outras palavras, se um item é visível no módulo
foo
, ele é visível em todos os descendentes defoo
.
mod externo { fn privado() { println!("externo::privado"); } pub fn publico() { println!("externo::publico"); } mod interno { fn privado() { println!("externo::interno::privado"); } pub fn publico() { println!("externo::interno::publico"); super::privado(); } } } fn main() { externo::publico(); }
- Use a palavra reservada
pub
para tornar módulos públicos.
Adicionamente, existem especificadores pub(...)
avançados para restringir o escopo de visibilidade pública.
- Veja a Referência Rust.
- A configuração de visibilidade
pub(crate)
é um padrão comum. - Menos comum, você pode dar visibilidade para um caminho específico.
- Em todo caso, a visibilidade deve ser concedida a um módulo ancestral (e a todos os seus descendentes).