2015-11-08 12 views
11

Czy jest jakiś sposób, aby poniższy kod zadziałał? To znaczy wyeksportować wyliczenie pod aliasem typu i zezwolić na dostęp do wariantów pod nową nazwą?Wpisz alias dla 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; 
} 

Odpowiedz

10

Nie sądzę typu aliasy pozwalają robić to, co chcesz, ale można zmienić nazwę typu enum w use oświadczenie:

enum One { A, B, C } 

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

można użyć w połączeniu z pub use do ponownego typy eksportu pod innym identyfikatorem:

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

Re-export to sztuczka - wydaje mi się, że sensowne jest, aby typy enum zachowywały się bardziej jak mini-moduły niż struktury i prymitywy. –

Powiązane problemy