pub type ExistentialPredicate<'tcx> = ExistentialPredicate<TyCtxt<'tcx>>;
Aliased Type§
pub 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 duplicate of the value. Read more
1.0.0 · Source§const fn clone_from(&mut self, source: &Self)
const 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: Decoder,
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: Decoder,
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: Encoder,
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: Encoder,
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§fn eq(&self, __other: &ExistentialPredicate<I>) -> bool
fn eq(&self, __other: &ExistentialPredicate<I>) -> bool
Tests for
self
and other
values to be equal, and is used by ==
.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) -> ExistentialPredicate<I>where
__F: TypeFolder<I>,
fn fold_with<__F>(self, __folder: &mut __F) -> ExistentialPredicate<I>where
__F: TypeFolder<I>,
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: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.