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