Type Alias AliasTermKind
pub type AliasTermKind<'db> = AliasTermKind<DbInterner<'db>>;Aliased Type§
pub enum AliasTermKind<'db> {
ProjectionTy {
def_id: TraitAssocTyId,
},
InherentTy {
def_id: InherentAssocTyId,
},
OpaqueTy {
def_id: OpaqueTyIdWrapper,
},
FreeTy {
def_id: FreeTyAliasId,
},
UnevaluatedConst {
def_id: GeneralConstIdWrapper,
},
ProjectionConst {
def_id: TraitAssocConstId,
},
FreeConst {
def_id: FreeConstAliasId,
},
InherentConst {
def_id: InherentAssocConstId,
},
}Variants§
ProjectionTy
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: TraitAssocTyIdInherentTy
An associated type in an inherent impl
The def_id is the DefId of the ImplItem for the associated type.
Fields
def_id: InherentAssocTyIdOpaqueTy
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: OpaqueTyIdWrapperFreeTy
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: FreeTyAliasIdUnevaluatedConst
An unevaluated anonymous constants.
Fields
def_id: GeneralConstIdWrapperProjectionConst
An unevaluated const coming from an associated const.
Fields
def_id: TraitAssocConstIdFreeConst
A top level const item not part of a trait or impl.
Fields
def_id: FreeConstAliasIdInherentConst
An associated const in an inherent impl
Fields
def_id: InherentAssocConstId