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()
函数是根模块,而outer
模块是项目的当前根模块。 因此,main()
函数可以访问outer
模块。
函数a()
是公共的,对outer::a()
的调用不会导致任何错误,但是当main()
函数试图访问outer::b()
函数时,它会导致编译错误,因为它是一个私有函数。
main()
函数无法访问内部模块,因为它是私有的。inner
模块没有子模块,因此只能由其父模块(即outer
模块)访问。