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.
Trait Implementations§
Source§impl<'tcx> QueryKey for AliasTyKind<'tcx>
impl<'tcx> QueryKey for AliasTyKind<'tcx>
Source§fn default_span(&self, tcx: TyCtxt<'_>) -> Span
fn default_span(&self, tcx: TyCtxt<'_>) -> Span
self, what span should we use?Source§type Cache<V> = DefaultCache<Self, V>
type Cache<V> = DefaultCache<Self, V>
type LocalQueryKey = !
Source§fn key_as_def_id(&self) -> Option<DefId>
fn key_as_def_id(&self) -> Option<DefId>
Source§fn as_local_key(&self) -> Option<Self::LocalQueryKey>
fn as_local_key(&self) -> Option<Self::LocalQueryKey>
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.