Type alias

Type alias is also supported. For example:

enum MyEnum {...}
struct MyStruct {...}

// type aliases
pub type Id = u64;
pub type EnumAlias = MyEnum;
pub type StructAlias = MyStruct;

// can also use them in fields, etc
pub struct TestModel { pub id: Id, pub e: EnumAlias, pub s: StructAlias}

pub fn f(input: Id) -> TestModel {...}

Limitation

The ItemType inside Generic is not supported yet, such as SyncReturn<Id>. The nested ItemType may also not be supported.