當呼叫模組的函式時,需要指定完整的路徑。
1)use關鍵字包括範圍內的所有模組。 因此,可以直接呼叫函式,而不必在呼叫函式時包含模組。Rust中的use關鍵字縮短了呼叫函式的長度,使函式的模組在範圍內。
2)使用 * 運算子
*運算子用於將所有專案放入範圍,這也稱為glob運算子。 如果使用glob運算子,那麼不需要單獨指定列舉變數。
3)使用 super 關鍵字
super關鍵字用於從當前模組訪問父模組,它使能夠訪問父模組的私有功能。
//self struct Rectangle { width: u32, height: u32, } impl Rectangle { fn area(&self) -> u32 { self.width * self.height //結構例項,"." } } fn foo() {} fn bar() { self::foo(); //本模組,:: } fn main() {} //Self trait T { type Item; //關聯型別 const C: i32; //常量,書裡沒講,更沒在特性裡見過。說明特性可以有常量 fn new() -> Self; //實施者的型別 fn f(&self) -> Self::Item; //實施時決定 } struct S; //空結構 impl T for S { type Item = i32; //具體化 const C: i32 = 9; //特性裡的資料賦值 fn new() -> Self { // 型別S S } fn f(&self) -> Self::Item { // i32 Self::C // 9, 此時沒有例項,實施的是型別 } } //super mod a { pub fn foo() {} } mod b { pub fn foo() { super::a::foo(); // 父模組 } } fn main() {} //串聯 mod a { fn foo() {} mod b { mod c { fn foo() { super::super::foo(); // call a's foo function self::super::super::foo(); // call a's foo function } } } } fn main() {}