pub enum AliasTermKind<I>where
I: Interner,{
ProjectionTy {
def_id: <I as Interner>::DefId,
},
InherentTy {
def_id: <I as Interner>::DefId,
},
OpaqueTy {
def_id: <I as Interner>::DefId,
},
FreeTy {
def_id: <I as Interner>::DefId,
},
UnevaluatedConst {
def_id: <I as Interner>::DefId,
},
ProjectionConst {
def_id: <I as Interner>::DefId,
},
FreeConst {
def_id: <I as Interner>::DefId,
},
InherentConst {
def_id: <I as Interner>::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§fn clone(&self) -> AliasTermKind<I>
fn clone(&self) -> AliasTermKind<I>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl<I> Debug for AliasTermKind<I>where
I: Interner,
impl<I> Debug for AliasTermKind<I>where
I: Interner,
Source§impl<I, __D> Decodable<__D> for AliasTermKind<I>
impl<I, __D> Decodable<__D> for AliasTermKind<I>
fn decode(__decoder: &mut __D) -> AliasTermKind<I>
Source§impl<I, __E> Encodable<__E> for AliasTermKind<I>
impl<I, __E> Encodable<__E> for AliasTermKind<I>
Source§impl<I> From<AliasTyKind<I>> for AliasTermKind<I>where
I: Interner,
impl<I> From<AliasTyKind<I>> for AliasTermKind<I>where
I: Interner,
Source§fn from(value: AliasTyKind<I>) -> AliasTermKind<I>
fn from(value: AliasTyKind<I>) -> AliasTermKind<I>
Source§impl<I> Hash for AliasTermKind<I>where
I: Interner,
impl<I> Hash for AliasTermKind<I>where
I: Interner,
Source§impl<I, __CTX> HashStable<__CTX> for AliasTermKind<I>
impl<I, __CTX> HashStable<__CTX> for AliasTermKind<I>
fn hash_stable( &self, __hcx: &mut __CTX, __hasher: &mut StableHasher<SipHasher128>, )
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) -> Option<AliasTermKind<J>>
Source§impl<I> PartialEq for AliasTermKind<I>where
I: Interner,
impl<I> PartialEq for AliasTermKind<I>where
I: Interner,
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<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T
fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]
Source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T
fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]
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<'tcx, T> DepNodeKey<'tcx> for T
impl<'tcx, T> DepNodeKey<'tcx> for T
default fn key_fingerprint_style() -> KeyFingerprintStyle
Source§default fn to_fingerprint(&self, tcx: TyCtxt<'tcx>) -> Fingerprint
default fn to_fingerprint(&self, tcx: TyCtxt<'tcx>) -> Fingerprint
Fingerprint to be used
in DepNode.Source§default fn try_recover_key(_: TyCtxt<'tcx>, _: &DepNode) -> Option<T>
default fn try_recover_key(_: TyCtxt<'tcx>, _: &DepNode) -> Option<T>
DepNode,
something which is needed when forcing DepNodes during red-green
evaluation. The query system will only call this method if
fingerprint_style() is not FingerprintStyle::Opaque.
It is always valid to return None here, in which case incremental
compilation will treat the query as having changed instead of forcing it.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<K> IntoQueryKey<K> for K
impl<K> IntoQueryKey<K> for K
Source§fn into_query_key(self) -> K
fn into_query_key(self) -> K
Self to K.
This should always be a very cheap conversion, e.g. LocalDefId::to_def_id.Source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
Source§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.