pub type TraitPredicate<'tcx> = TraitPredicate<TyCtxt<'tcx>>;
Aliased Type§
struct TraitPredicate<'tcx> {
pub trait_ref: TraitRef<TyCtxt<'tcx>>,
pub polarity: PredicatePolarity,
}
Fields§
§trait_ref: TraitRef<TyCtxt<'tcx>>
§polarity: PredicatePolarity
If polarity is Positive: we are proving that the trait is implemented.
If polarity is Negative: we are proving that a negative impl of this trait exists. (Note that coherence also checks whether negative impls of supertraits exist via a series of predicates.)
If polarity is Reserved: that’s a bug.
Implementations
Trait Implementations§
Source§impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for TraitPredicate<'tcx>
impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for TraitPredicate<'tcx>
Source§impl<'tcx> PrintTraitPredicateExt<'tcx> for TraitPredicate<'tcx>
impl<'tcx> PrintTraitPredicateExt<'tcx> for TraitPredicate<'tcx>
fn print_modifiers_and_trait_path(self) -> TraitPredPrintModifiersAndPath<'tcx>
Source§impl<I> Clone for TraitPredicate<I>where
I: Interner,
impl<I> Clone for TraitPredicate<I>where
I: Interner,
Source§fn clone(&self) -> TraitPredicate<I>
fn clone(&self) -> TraitPredicate<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 TraitPredicate<I>where
I: Interner,
impl<I> Debug for TraitPredicate<I>where
I: Interner,
Source§impl<I, __D> Decodable<__D> for TraitPredicate<I>
impl<I, __D> Decodable<__D> for TraitPredicate<I>
fn decode(__decoder: &mut __D) -> TraitPredicate<I>
Source§impl<I> Display for TraitPredicate<I>where
I: Interner,
impl<I> Display for TraitPredicate<I>where
I: Interner,
Source§impl<I, __E> Encodable<__E> for TraitPredicate<I>
impl<I, __E> Encodable<__E> for TraitPredicate<I>
Source§impl<I> Hash for TraitPredicate<I>where
I: Interner,
impl<I> Hash for TraitPredicate<I>where
I: Interner,
Source§impl<I, __CTX> HashStable<__CTX> for TraitPredicate<I>
impl<I, __CTX> HashStable<__CTX> for TraitPredicate<I>
fn hash_stable( &self, __hcx: &mut __CTX, __hasher: &mut StableHasher<SipHasher128>, )
Source§impl<I, J> Lift<J> for TraitPredicate<I>where
I: Interner,
J: Interner,
TraitRef<I>: Lift<J, Lifted = TraitRef<J>>,
PredicatePolarity: Lift<J, Lifted = PredicatePolarity>,
impl<I, J> Lift<J> for TraitPredicate<I>where
I: Interner,
J: Interner,
TraitRef<I>: Lift<J, Lifted = TraitRef<J>>,
PredicatePolarity: Lift<J, Lifted = PredicatePolarity>,
type Lifted = TraitPredicate<J>
fn lift_to_interner(self, interner: J) -> Option<TraitPredicate<J>>
Source§impl<I> PartialEq for TraitPredicate<I>where
I: Interner,
impl<I> PartialEq for TraitPredicate<I>where
I: Interner,
Source§impl<I> Relate<I> for TraitPredicate<I>where
I: Interner,
impl<I> Relate<I> for TraitPredicate<I>where
I: Interner,
fn relate<R>(
relation: &mut R,
a: TraitPredicate<I>,
b: TraitPredicate<I>,
) -> Result<TraitPredicate<I>, TypeError<I>>where
R: TypeRelation<I>,
Source§impl<I> TypeFoldable<I> for TraitPredicate<I>
impl<I> TypeFoldable<I> for TraitPredicate<I>
Source§fn try_fold_with<__F>(
self,
__folder: &mut __F,
) -> Result<TraitPredicate<I>, <__F as FallibleTypeFolder<I>>::Error>where
__F: FallibleTypeFolder<I>,
fn try_fold_with<__F>(
self,
__folder: &mut __F,
) -> Result<TraitPredicate<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 TraitPredicate<I>
impl<I> TypeVisitable<I> for TraitPredicate<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>,
Source§impl<I> UpcastFrom<I, TraitRef<I>> for TraitPredicate<I>where
I: Interner,
impl<I> UpcastFrom<I, TraitRef<I>> for TraitPredicate<I>where
I: Interner,
fn upcast_from(from: TraitRef<I>, _tcx: I) -> TraitPredicate<I>
impl<I> Copy for TraitPredicate<I>where
I: Interner,
impl<I> Eq for TraitPredicate<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