可见性
模块是一种隐私边界:
- 默认情况下,模块项是私有的(隐藏实现详情)。
- 父项和同级子项始终可见。
- 换言之,如果某个项在模块“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)”可见性是一种常见模式。
- 您可以为特定路径授予可见性,这种情况不太常见。
- 在任何情况下,都必须向祖先模块(及其所有后代)授予可见性。