2016-06-28 106 views

回答

7

在簡單類型的情況下,就像在你的例子中,似乎沒有任何語義差異。此外,還有一個直接模擬與usepub type,這是pub use

// will be available to other modules 
pub use hyper::status::StatusCode as Error; 

然而,也有更復雜的情況不同。例如,你可以定義泛型類型的別名或別名專門泛型類型:

type Result<T> = ::std::result::Result<T, MyError>; 

type OptionI32 = Option<i32>; 

總的想法是,你平時使用類型別名,因爲他們更強大和建議的意圖更加明確,像Result,和您使用use .. as ..,當你只想要導入的具體名稱,但它的東西是已經在當前的命名空間衝突:

use std::io::Read as StdRead; 

trait Read: StdRead { ... } 

注意,使用路徑限定標識符應首選use重命名。以上是更好寫成

use std::io; 

trait Read: io::Read { ... } 

(除非被用於在相同的文件中的一些具體類型的課程,Read方法)。

使用use .. as ..作爲type的替代品(在有可能的情況下)是罕見的,我認爲這應該是可以避免的。