Visibilidad

Los módulos marcan el límite de la privacidad:

  • Los elementos del módulo son privados de forma predeterminada (se ocultan los detalles de implementación).
  • Los elementos superiores y los del mismo nivel siempre están visibles.
  • Es decir, si un elemento está visible en el módulo foo, se verá en todos los elementos descendientes 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.
  • Haz que los módulos sean públicos con la palabra clave pub.

Además, hay especificadores pub(...) avanzados para restringir el ámbito de la visibilidad pública.

  • Consulta el libro Rust Reference.
  • Configurar la visibilidad de pub(crate) es un patrón común.
  • Aunque es menos frecuente, se puede dar visibilidad a una ruta específica.
  • En cualquier caso, se debe dar visibilidad a un módulo antecedente (y a todos sus descendientes).