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
模組)存取。