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 outer { fn private() { println!("outer::private"); } pub fn public() { println!("outer::public"); } mod inner { fn private() { println!("outer::inner::private"); } pub fn public() { println!("outer::inner::public"); super::private(); } } } fn main() { outer::public(); }
This slide should take about 5 minutes.
- 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).