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

執行上面範例程式碼,得到以下結果 -

在上面的範例中,main()函式是根模組,而outer模組是專案的當前根模組。 因此,main()函式可以存取outer模組。

函式a()是公共的,對outer::a()的呼叫不會導致任何錯誤,但是當main()函式試圖存取outer::b()函式時,它會導致編譯錯誤,因為它是一個私有函式。

main()函式無法存取內部模組,因為它是私有的。inner模組沒有子模組,因此只能由其父模組(即outer模組)存取。