pub enum AliasTermKind<I: Interner> {
ProjectionTy {
def_id: I::DefId,
},
InherentTy {
def_id: I::DefId,
},
OpaqueTy {
def_id: I::DefId,
},
FreeTy {
def_id: I::DefId,
},
UnevaluatedConst {
def_id: I::DefId,
},
ProjectionConst {
def_id: I::DefId,
},
FreeConst {
def_id: I::DefId,
},
InherentConst {
def_id: I::DefId,
},
}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).
InherentTy
An associated type in an inherent impl
The def_id is the DefId of the ImplItem for the associated type.
OpaqueTy
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.
FreeTy
A type alias that actually checks its trait bounds.
Currently only used if the type alias references opaque types. Can always be normalized away.
UnevaluatedConst
An unevaluated anonymous constants.
ProjectionConst
An unevaluated const coming from an associated const.
FreeConst
A top level const item not part of a trait or impl.
InherentConst
An associated const in an inherent impl
Implementations§
Trait Implementations§
Source§impl<I> Clone for AliasTermKind<I>where
I: Interner,
impl<I> Clone for AliasTermKind<I>where
I: Interner,
Source§impl<I> Debug for AliasTermKind<I>where
I: Interner,
impl<I> Debug for AliasTermKind<I>where
I: Interner,
Source§impl<I: Interner> From<AliasTyKind<I>> for AliasTermKind<I>
impl<I: Interner> From<AliasTyKind<I>> for AliasTermKind<I>
Source§fn from(value: AliasTyKind<I>) -> Self
fn from(value: AliasTyKind<I>) -> Self
Source§impl<I> Hash for AliasTermKind<I>where
I: Interner,
impl<I> Hash for AliasTermKind<I>where
I: Interner,
Source§impl<I, J> Lift<J> for AliasTermKind<I>
impl<I, J> Lift<J> for AliasTermKind<I>
type Lifted = AliasTermKind<J>
fn lift_to_interner(self, interner: J) -> Self::Lifted
Source§impl<I> PartialEq for AliasTermKind<I>where
I: Interner,
impl<I> PartialEq for AliasTermKind<I>where
I: Interner,
Source§impl<I: Interner> StableHash for AliasTermKind<I>where
I::DefId: StableHash,
impl<I: Interner> StableHash for AliasTermKind<I>where
I::DefId: StableHash,
fn stable_hash<__Hcx: StableHashCtxt>( &self, __hcx: &mut __Hcx, __hasher: &mut StableHasher, )
impl<I> Copy for AliasTermKind<I>where
I: Interner,
impl<I> Eq for AliasTermKind<I>where
I: Interner,
Auto Trait Implementations§
impl<I> DynSend for AliasTermKind<I>
impl<I> DynSync for AliasTermKind<I>
impl<I> Freeze for AliasTermKind<I>
impl<I> RefUnwindSafe for AliasTermKind<I>
impl<I> Send for AliasTermKind<I>
impl<I> Sync for AliasTermKind<I>
impl<I> Unpin for AliasTermKind<I>
impl<I> UnsafeUnpin for AliasTermKind<I>
impl<I> UnwindSafe for AliasTermKind<I>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
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.