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