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
pubpara 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).