Rust公開函數

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();  
}

執行上面示例代碼,得到以下結果 -

Rust公開函數

在上面的示例中,main()函數是根模塊,而outer模塊是項目的當前根模塊。 因此,main()函數可以訪問outer模塊。

函數a()是公共的,對outer::a()的調用不會導致任何錯誤,但是當main()函數試圖訪問outer::b()函數時,它會導致編譯錯誤,因爲它是一個私有函數。

main()函數無法訪問內部模塊,因爲它是私有的。inner模塊沒有子模塊,因此只能由其父模塊(即outer模塊)訪問。