enum

2015-11-08 7 views
11

के लिए उपनाम टाइप करें क्या नीचे दिए गए कोड को बनाने का कोई तरीका है? यही है, एक प्रकार के उपनाम के तहत एक enum निर्यात, और नए नाम के तहत संस्करणों तक पहुंच की अनुमति?enum

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; 
} 

उत्तर

10

मुझे नहीं लगता कि प्रकार उपनाम कर की अनुमति आप क्या चाहते हैं, लेकिन आप एक use बयान में enum प्रकार नाम बदल सकते हैं:

enum One { A, B, C } 

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

आप फिर से करने pub use के साथ संयोजन में उपयोग कर सकते हैं एक अलग पहचानकर्ता के अंतर्गत निर्यात प्रकार:

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

पुन: निर्यात काम कर देता है - मुझे लगता है कि यह समझ में आता है enum प्रकार अधिक की तरह structs और पुरातन से मिनी मॉड्यूल व्यवहार करने के लिए। –

 संबंधित मुद्दे