Видимість
Модулі є межею конфіденційності:
- Елементи модуля є приватними за замовчуванням (приховує деталі реалізації).
- Батьківські та споріднені елементи завжди видно.
- Іншими словами, якщо елемент видимий у модулі
foo, він видимий у всіх нащадках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.
- Використовуйте ключове слово
pub, щоб зробити модулі загальнодоступними.
Крім того, існують розширені специфікатори pub(...) для обмеження обсягу публічної видимості.
- Перегляньте довідник Rust.
- Налаштування видимості
pub(crate)є типовим шаблоном. - Рідше ви можете надати видимість певному шляху.
- У будь-якому випадку видимість повинна бути надана модулю-предпопереднику (і всім його нащадкам).