2015-11-08 19 views
11

Aşağıdaki kodun çalışmasının bir yolu var mı? Yani, bir tür takma adı altında bir enum dışa aktarın ve yeni adın altındaki varyantlara erişime izin verin?Enum için yazım takma adı

enum One { A, B, C } 

type Two = One; 

fn main() { 
    // error: no associated item named `B` found for type `One` in the current scope 
    let b = Two::B; 
} 

cevap

10

Ben türü takma adları istediğini yaptığını izin sanmıyorum, ama bir use açıklamada enum türü yeniden adlandırabilirsiniz:

enum One { A, B, C } 

fn main() { 
    use One as Two; 
    let b = Two::B; 
} 

Sen yeniden için pub use birlikte kullanabilirsiniz Farklı bir tanımlayıcı altında dışa aktarma türleri:

mod foo { 
    pub enum One { A, B, C } 
} 

mod bar { 
    pub use foo::One as Two; 
} 

fn main() { 
    use bar::Two; 
    let b = Two::B; 
} 
+0

Yeniden dışa aktarma işlemi hile yapar - Sanırım enum türlerinin yapı ve ilkellerden daha mini modüller gibi davranmasını sağlar. –

İlgili konular