2015-11-08 16 views
11

以下のコードを動作させる方法はありますか?つまり、エイリアスをエイリアスの下にエクスポートし、新しい名前でバリアントにアクセスできるようにしますか?タイプエイリアスのエイリアス

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

再輸出は、トリックを行います - 私は、列挙型は、より構造体とプリミティブよりも小型のモジュールのように動作するのは理にかなっていると思います。 –