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是指barCrate 中的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::*。不過,這不是建議的做法,因為我們無法確定匯入了哪些項目,而且這些項目可能隨著時間改變。