use、super、self
模組可以使用 use
將其他模組的符號帶進範圍內。您通常會在每個模組的頂端看到類似下方的內容:
use std::collections::HashSet; use std::process::abort;
路徑
路徑的解析方式包括:
-
做為相對路徑:
foo
或self::foo
是指目前模組中的foo
。super::foo
是指父項模組中的foo
。
-
做為絕對路徑:
crate::foo
是指目前 Crate 根目錄中的foo
。bar::foo
是指bar
Crate 中的foo
。
This slide should take about 8 minutes.
-
常見的方式是在較短的路徑上「重新導出」符號。舉例來說,Crate 中的頂層
lib.rs
可能有mod storage; pub use storage::disk::DiskStorage; pub use storage::network::NetworkStorage;
透過便捷的短路徑,向其他 Crate 提供
DiskStorage
和NetworkStorage
。 -
在大部分情況下,只有顯示在模組中的項目需要
use
。但是,如要呼叫特徵的任何方法,該特徵必須處於範圍之內,即使實作該特徵的型別已在範圍內也一樣。舉例來說,如要在實作Read
特徵的型別上使用read_to_string
方法,您需要use std::io::Read
。 -
use
陳述式可能包含萬用字元,例如use std::io::*
。不過,這不是建議的做法,因為我們無法確定匯入了哪些項目,而且這些項目可能隨著時間改變。