# Type alias where clause before equals type Alias where T: Copy = T; ==> SourceFile( TypeItem( type, TypeIdentifier, TypeParamList(TypeIdentifier), WhereClause(where, TypeBoundClause(TypeIdentifier, TraitBounds(TypeIdentifier))), TypeIdentifier)) # Public type alias with a where clause pub type Alias where T: Copy = T; ==> SourceFile( TypeItem( Vis(pub), type, TypeIdentifier, TypeParamList(TypeIdentifier), WhereClause(where, TypeBoundClause(TypeIdentifier, TraitBounds(TypeIdentifier))), TypeIdentifier)) # Type alias with multiple where predicates type Pair where T: Copy, U: Clone = (T, U); ==> SourceFile( TypeItem( type, TypeIdentifier, TypeParamList(TypeIdentifier, TypeIdentifier), WhereClause( where, TypeBoundClause(TypeIdentifier, TraitBounds(TypeIdentifier)), TypeBoundClause(TypeIdentifier, TraitBounds(TypeIdentifier))), TupleType(TypeIdentifier, TypeIdentifier)))