type_alias_enum_variants

The tracking issue for this feature is: #49683


The type_alias_enum_variants feature enables the use of variants on type aliases that refer to enums, as both a constructor and a pattern. That is, it allows for the syntax EnumAlias::Variant, which behaves exactly the same as Enum::Variant (assuming that EnumAlias is an alias for some enum type Enum).

Note that since Self exists as a type alias, this feature also enables the use of the syntax Self::Variant within an impl block for an enum type.

#![feature(type_alias_enum_variants)] enum Foo { Bar(i32), Baz { i: i32 }, } type Alias = Foo; fn main() { let t = Alias::Bar(0); let t = Alias::Baz { i: 0 }; match t { Alias::Bar(_i) => {} Alias::Baz { i: _i } => {} } }