模組是一個名稱空間,包含函式或其型別的定義。 模組是函式,結構,特徵,impl
塊等項的集合。 預設情況下,模組的修飾符是私有的,但可以使用pub
關鍵字使用public
修飾符覆蓋它。
以下是模組中使用的關鍵字:
mod
關鍵字宣告新模組。pub
關鍵字使可見性修飾符成為公共,因此,它們可在名稱空間外部存取。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.rs
或X/mod.rs
的單獨檔案中定義的。
2.子模組: 在單個檔案中,可以有多個模組。假設庫名稱是 - language
,它由兩個模組組成,即C
和Cplus
。
下面給出了language
庫的層次結構:
通過下面一個例子來理解:
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
在上面的例子中,程式由兩個模組組成,即c
和cplus
,它們各自的函式通過使用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
在上面的例子中,程式由兩個模組組成,即a
和b
,其中b
是a
的內部模組。 這兩個模組都包含具有相同名稱但功能不同。 這兩個函式分別使用a::a()
和a::b::b()
來呼叫。 它們都不會相互衝突,因為它們屬於不同的名稱空間。