I was thinking about a new type definition syntax:
turn
struct Foo;
struct Bar<T> { value: T }
into
type Foo: ();
type<T> Bar: struct { value: T };
.
It’s just like bounds,
fn foo<T: Trait>() {}
means T is not as type Trait but fits the limitation of Trait.
So we don’t change much to unify the enum/struct definition syntax, and we find a new way to distinguish alias type and defining new type.
Current struct/enum definition syntax can remain as syntax sugar.