Type Alias AliasTyKind
pub type AliasTyKind<'db> = AliasTyKind<DbInterner<'db>>;Aliased Type§
pub enum AliasTyKind<'db> {
Projection {
def_id: TraitAssocTyId,
},
Inherent {
def_id: InherentAssocTyId,
},
Opaque {
def_id: OpaqueTyIdWrapper,
},
Free {
def_id: FreeTyAliasId,
},
}Variants§
Projection
A projection <Type as Trait>::AssocType.
Can get normalized away if monomorphic enough.
The def_id is the DefId of the TraitItem for the associated type.
Note that the def_id is not the DefId of the TraitRef containing this
associated type, which is in interner.associated_item(def_id).container,
aka. interner.parent(def_id).
Fields
def_id: TraitAssocTyIdInherent
An associated type in an inherent impl
The def_id is the DefId of the ImplItem for the associated type.
Fields
def_id: InherentAssocTyIdOpaque
An opaque type (usually from impl Trait in type aliases or function return types)
def_id is the DefId of the OpaqueType item.
Can only be normalized away in PostAnalysis mode or its defining scope.
During codegen, interner.type_of(def_id) can be used to get the type of the
underlying type if the type is an opaque.
Fields
def_id: OpaqueTyIdWrapperFree
A type alias that actually checks its trait bounds.
Currently only used if the type alias references opaque types. Can always be normalized away.
Fields
def_id: FreeTyAliasId