pub type ExistentialPredicate<'tcx> = ExistentialPredicate<TyCtxt<'tcx>>;
Aliased Type§
enum ExistentialPredicate<'tcx> {
Trait(ExistentialTraitRef<TyCtxt<'tcx>>),
Projection(ExistentialProjection<TyCtxt<'tcx>>),
AutoTrait(DefId),
}
Variants§
Trait(ExistentialTraitRef<TyCtxt<'tcx>>)
E.g., Iterator
.
Projection(ExistentialProjection<TyCtxt<'tcx>>)
E.g., Iterator::Item = T
.
AutoTrait(DefId)
E.g., Send
.
Trait Implementations§
Source§impl<'tcx> ExistentialPredicateStableCmpExt<'tcx> for ExistentialPredicate<'tcx>
impl<'tcx> ExistentialPredicateStableCmpExt<'tcx> for ExistentialPredicate<'tcx>
Source§fn stable_cmp(&self, tcx: TyCtxt<'tcx>, other: &Self) -> Ordering
fn stable_cmp(&self, tcx: TyCtxt<'tcx>, other: &Self) -> Ordering
Compares via an ordering that will not change if modules are reordered or other changes are made to the tree. In particular, this ordering is preserved across incremental compilations.
Source§impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for ExistentialPredicate<'tcx>
impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for ExistentialPredicate<'tcx>
Source§impl<I> Clone for ExistentialPredicate<I>where
I: Interner,
impl<I> Clone for ExistentialPredicate<I>where
I: Interner,
Source§fn clone(&self) -> ExistentialPredicate<I>
fn clone(&self) -> ExistentialPredicate<I>
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl<I> Debug for ExistentialPredicate<I>where
I: Interner,
impl<I> Debug for ExistentialPredicate<I>where
I: Interner,
Source§impl<I, __D> Decodable<__D> for ExistentialPredicate<I>where
I: Interner,
__D: TyDecoder<I = I>,
ExistentialTraitRef<I>: Decodable<__D>,
ExistentialProjection<I>: Decodable<__D>,
<I as Interner>::DefId: Decodable<__D>,
impl<I, __D> Decodable<__D> for ExistentialPredicate<I>where
I: Interner,
__D: TyDecoder<I = I>,
ExistentialTraitRef<I>: Decodable<__D>,
ExistentialProjection<I>: Decodable<__D>,
<I as Interner>::DefId: Decodable<__D>,
fn decode(__decoder: &mut __D) -> ExistentialPredicate<I>
Source§impl<I, __E> Encodable<__E> for ExistentialPredicate<I>where
I: Interner,
__E: TyEncoder<I = I>,
ExistentialTraitRef<I>: Encodable<__E>,
ExistentialProjection<I>: Encodable<__E>,
<I as Interner>::DefId: Encodable<__E>,
impl<I, __E> Encodable<__E> for ExistentialPredicate<I>where
I: Interner,
__E: TyEncoder<I = I>,
ExistentialTraitRef<I>: Encodable<__E>,
ExistentialProjection<I>: Encodable<__E>,
<I as Interner>::DefId: Encodable<__E>,
Source§impl<I> Hash for ExistentialPredicate<I>where
I: Interner,
impl<I> Hash for ExistentialPredicate<I>where
I: Interner,
Source§impl<I, __CTX> HashStable<__CTX> for ExistentialPredicate<I>where
I: Interner,
ExistentialTraitRef<I>: HashStable<__CTX>,
ExistentialProjection<I>: HashStable<__CTX>,
<I as Interner>::DefId: HashStable<__CTX>,
impl<I, __CTX> HashStable<__CTX> for ExistentialPredicate<I>where
I: Interner,
ExistentialTraitRef<I>: HashStable<__CTX>,
ExistentialProjection<I>: HashStable<__CTX>,
<I as Interner>::DefId: HashStable<__CTX>,
fn hash_stable( &self, __hcx: &mut __CTX, __hasher: &mut StableHasher<SipHasher128>, )
Source§impl<I, J> Lift<J> for ExistentialPredicate<I>where
I: Interner,
J: Interner,
ExistentialTraitRef<I>: Lift<J, Lifted = ExistentialTraitRef<J>>,
ExistentialProjection<I>: Lift<J, Lifted = ExistentialProjection<J>>,
<I as Interner>::DefId: Lift<J, Lifted = <J as Interner>::DefId>,
impl<I, J> Lift<J> for ExistentialPredicate<I>where
I: Interner,
J: Interner,
ExistentialTraitRef<I>: Lift<J, Lifted = ExistentialTraitRef<J>>,
ExistentialProjection<I>: Lift<J, Lifted = ExistentialProjection<J>>,
<I as Interner>::DefId: Lift<J, Lifted = <J as Interner>::DefId>,
type Lifted = ExistentialPredicate<J>
fn lift_to_interner(self, interner: J) -> Option<ExistentialPredicate<J>>
Source§impl<I> PartialEq for ExistentialPredicate<I>where
I: Interner,
impl<I> PartialEq for ExistentialPredicate<I>where
I: Interner,
Source§impl<I> TypeFoldable<I> for ExistentialPredicate<I>where
I: Interner,
ExistentialTraitRef<I>: TypeFoldable<I>,
ExistentialProjection<I>: TypeFoldable<I>,
<I as Interner>::DefId: TypeFoldable<I>,
impl<I> TypeFoldable<I> for ExistentialPredicate<I>where
I: Interner,
ExistentialTraitRef<I>: TypeFoldable<I>,
ExistentialProjection<I>: TypeFoldable<I>,
<I as Interner>::DefId: TypeFoldable<I>,
Source§fn try_fold_with<__F>(
self,
__folder: &mut __F,
) -> Result<ExistentialPredicate<I>, <__F as FallibleTypeFolder<I>>::Error>where
__F: FallibleTypeFolder<I>,
fn try_fold_with<__F>(
self,
__folder: &mut __F,
) -> Result<ExistentialPredicate<I>, <__F as FallibleTypeFolder<I>>::Error>where
__F: FallibleTypeFolder<I>,
Source§fn fold_with<F>(self, folder: &mut F) -> Selfwhere
F: TypeFolder<I>,
fn fold_with<F>(self, folder: &mut F) -> Selfwhere
F: TypeFolder<I>,
A convenient alternative to
try_fold_with
for use with infallible
folders. Do not override this method, to ensure coherence with
try_fold_with
.Source§impl<I> TypeVisitable<I> for ExistentialPredicate<I>where
I: Interner,
ExistentialTraitRef<I>: TypeVisitable<I>,
ExistentialProjection<I>: TypeVisitable<I>,
<I as Interner>::DefId: TypeVisitable<I>,
impl<I> TypeVisitable<I> for ExistentialPredicate<I>where
I: Interner,
ExistentialTraitRef<I>: TypeVisitable<I>,
ExistentialProjection<I>: TypeVisitable<I>,
<I as Interner>::DefId: TypeVisitable<I>,
Source§fn visit_with<__V>(
&self,
__visitor: &mut __V,
) -> <__V as TypeVisitor<I>>::Resultwhere
__V: TypeVisitor<I>,
fn visit_with<__V>(
&self,
__visitor: &mut __V,
) -> <__V as TypeVisitor<I>>::Resultwhere
__V: TypeVisitor<I>,
impl<I> Copy for ExistentialPredicate<I>where
I: Interner,
impl<I> Eq for ExistentialPredicate<I>where
I: Interner,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 24 bytes
Size for each variant:
Trait
: 24 bytesProjection
: 24 bytesAutoTrait
: 12 bytes