声明的开始使用” pub”关键字, 以便外部函数可以访问该函数。
以下是隐私规则:
- 如果任何函数或模块是公共的, 那么任何父模块都可以访问它。
- 如果任何函数或模块是私有的, 则可以通过其直接父模块或父模块的子模块对其进行访问。
让我们通过一个简单的例子来理解这一点:
mod outer
{
pub fn a()
{
println!("function a");
}
fn b()
{
println!("function b");
}
mod inner
{
pub fn c()
{
println!("function c");
}
fn d()
{
println!("function d");
}
}
}
fn main()
{
outer::a();
outer::b();
outer::inner::c();
outer::inner::d();
}
输出
在上面的示例中, main()函数是根模块, 而外部模块是项目的当前根模块。因此, main()函数可以访问外部模块。
由于函数a()是公共的, 因此对external :: a()的调用不会导致任何错误, 但是当main()函数尝试访问external :: b()函数时, 由于它会导致编译错误是私有函数。
main()函数无法访问内部模块, 因为它是私有的。内部模块没有子模块, 因此只能由其父模块(即外部模块)访问。