Rust模塊

模塊是一個名稱空間,包含函數或其類型的定義。 模塊是函數,結構,特徵,impl塊等項的集合。 默認情況下,模塊的修飾符是私有的,但可以使用pub關鍵字使用public修飾符覆蓋它。

以下是模塊中使用的關鍵字:

  • mod關鍵字mod關鍵字聲明新模塊。
  • pub關鍵字:默認情況下,所有函數,類型,模塊和常量都具有私有可見性修飾符。 pub關鍵字使可見性修飾符成爲公共,因此,它們可在命名空間外部訪問。
  • use關鍵字use關鍵字用於將模塊導入本地範圍。

模塊定義

模塊由mod關鍵字定義。

模塊的語法:

mod module_name  
// body inside the module.

模塊可以通過三種方式分類:

1.單個模塊: 當模塊出現在單個文件中時稱爲單個模塊。

通過下面一個例子來理解這一點:

mod a  
{  
     pub fn single_module()  
    {  
      println!("Single module");  
    }  
}  
fn main()  
{  
  a::single_module();  
}

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

Single module

在上面的示例中,定義了一個模塊 - a,並且塊中定義的每個代碼都在命名空間a內。 可以使用模塊名稱後跟命名空間然後使用函數名稱來調用模塊a中的函數。

也可以使用單獨的文件來執行上面的示例:

mod module;  
fn main()  
{  
  module::single_module();  
}
pub fn single_module()  
{  
    println!("Single module");  
}

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

Single module

在上面兩個例子中,檢查mod X是用大括號還是在一個名爲X.rsX/mod.rs的單獨文件中定義的。

2.子模塊: 在單個文件中,可以有多個模塊。假設庫名稱是 - language,它由兩個模塊組成,即CCplus

下面給出了language庫的層次結構:

Rust模塊

通過下面一個例子來理解:

mod c  
{  
  pub fn c()  
  {  
    println!("C is a structured programming language");  
  }  
}  
mod cplus  
{  
 pub fn cplus()  
 {  
    println!("C++ is an object-oriented programming language");  
 }  
}  
fn main()  
{  
  c::c();  
  cplus::cplus();  
}

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

C is a structured programming language
C++ is an object-oriented programming language

在上面的例子中,程序由兩個模塊組成,即ccplus,它們各自的函數通過使用c::c()cplus::cplus()來調用。

3.嵌套模塊: 嵌套模塊是由模塊內部的模塊組成的模塊,當相關模塊組合在一起時它們非常有用。

通過下面一個例子來理解這一點:

mod a  
{  
 pub fn a()  
 {  
   println!("a module");  
 }  
 pub mod b  
 {  
   pub fn a()  
   {  
     println!("b module");  
   }  
 }  
}  
fn main()  
{  
 a::a();  
 a::b::b();  
}

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

a module
b module

在上面的例子中,程序由兩個模塊組成,即ab,其中ba的內部模塊。 這兩個模塊都包含具有相同名稱但功能不同。 這兩個函數分別使用a::a()a::b::b()來調用。 它們都不會相互衝突,因爲它們屬於不同的名稱空間。