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
模块)访问。