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 de foo.
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).