Тип псевдонима для перечисления

Есть ли способ сделать код ниже? То есть экспортируйте перечисление под псевдонимом типа и разрешите доступ к вариантам под новым именем?

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

Ответ 1

Я не думаю, что псевдонимы типов позволяют делать то, что вы хотите, но вы можете переименовать тип перечисления в инструкции 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;
}