可见性

模块是一种隐私边界:

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