Rust教學
Rust下載和安裝
Rust簡介
Rust Hello World
Rust的特點
Rust註釋
Rust開發環境安裝
Rust文檔
Rust第一個程序
Rust格式化打印
Rust調試
Rust顯示
測試用例:列表
Rust格式化
Rust原語
Rust常量和運算符
Rust元組
Rust數組和切片
Rust自定義類型
Rust結構
Rust可視性
Rust枚舉
Rust常量
Rust變量綁定
Rust變量綁定-可變性
Rust變量綁定-範圍和陰影
Rust變量綁定-聲明
Rust類型轉換
Rust類型轉換 - 字面量
Rust類型轉換-推導
Rust類型轉換 - 別名
Rust表達式
Rust if/else語句
Rust循環
Rust嵌套和標籤
Rust while循環
Rust for和範圍
Rust匹配/match
Rust匹配析構元組
Rust解構枚舉
Rust指針和引用
Rust解構結構
Rust Guards
Rust綁定
Rust if let
Rust while let
Rust函數
Rust方法
Rust閉包
Rust捕捉
Rust作爲輸入參數
Rust匿名類型
Rust輸入函數
Rust作爲輸出參數
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.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()
來調用。 它們都不會相互衝突,因爲它們屬於不同的名稱空間。