pub type AliasTyKind<'tcx> = AliasTyKind<TyCtxt<'tcx>>;Aliased Type§
pub enum AliasTyKind<'tcx> {
Projection {
def_id: DefId,
},
Inherent {
def_id: DefId,
},
Opaque {
def_id: DefId,
},
Free {
def_id: DefId,
},
}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).
Inherent
An associated type in an inherent impl
The def_id is the DefId of the ImplItem for the associated type.
Opaque
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.
Free
A type alias that actually checks its trait bounds.
Currently only used if the type alias references opaque types. Can always be normalized away.
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.