[][src]Struct rustc_middle::ty::Predicate

pub struct Predicate<'tcx> {
    inner: &'tcx PredicateInner<'tcx>,


inner: &'tcx PredicateInner<'tcx>


impl<'tcx> Predicate<'tcx>[src]

pub fn kind(self) -> &'tcx PredicateKind<'tcx>[src]

pub fn skip_binders(self) -> PredicateAtom<'tcx>[src]

Returns the inner PredicateAtom.

The returned atom may contain unbound variables bound to binders skipped in this method. It is safe to reapply binders to the given atom.

Note that this method panics in case this predicate has unbound variables.

pub fn skip_binders_unchecked(self) -> PredicateAtom<'tcx>[src]

Returns the inner PredicateAtom.

Note that this method does not check if the predicate has unbound variables.

Rebinding the returned atom can causes the previously bound variables to end up at the wrong binding level.

pub fn bound_atom(self) -> Binder<PredicateAtom<'tcx>>[src]

Converts this to a Binder<PredicateAtom<'tcx>>. If the value was an Atom, then it is not allowed to contain escaping bound vars.

pub fn bound_atom_with_opt_escaping(
    tcx: TyCtxt<'tcx>
) -> Binder<PredicateAtom<'tcx>>

Allows using a Binder<PredicateAtom<'tcx>> even if the given predicate previously contained unbound variables by shifting these variables outwards.

impl<'tcx> Predicate<'tcx>[src]

pub fn subst_supertrait(
    tcx: TyCtxt<'tcx>,
    trait_ref: &PolyTraitRef<'tcx>
) -> Predicate<'tcx>

Performs a substitution suitable for going from a poly-trait-ref to supertraits that must hold if that poly-trait-ref holds. This is slightly different from a normal substitution in terms of what happens with bound regions. See lengthy comment below for details.

impl<'tcx> Predicate<'tcx>[src]

pub fn to_opt_poly_trait_ref(self) -> Option<ConstnessAnd<PolyTraitRef<'tcx>>>[src]

pub fn to_opt_type_outlives(self) -> Option<PolyTypeOutlivesPredicate<'tcx>>[src]

Trait Implementations

impl<'tcx> Clone for Predicate<'tcx>[src]

impl<'tcx> Copy for Predicate<'tcx>[src]

impl<'tcx> Debug for Predicate<'tcx>[src]

impl<'tcx, D: TyDecoder<'tcx>> Decodable<D> for Predicate<'tcx>[src]

impl<'tcx> Display for Predicate<'tcx>[src]

impl<'tcx, E: TyEncoder<'tcx>> Encodable<E> for Predicate<'tcx>[src]

impl<'tcx, E: TyEncoder<'tcx>> EncodableWithShorthand<'tcx, E> for Predicate<'tcx>[src]

type Variant = PredicateKind<'tcx>

impl<'tcx> Eq for Predicate<'tcx>[src]

impl<'_> Hash for Predicate<'_>[src]

impl<'a, 'tcx> HashStable<StableHashingContext<'a>> for Predicate<'tcx>[src]

impl<'tcx, '__lifted> Lift<'__lifted> for Predicate<'tcx>[src]

type Lifted = Predicate<'__lifted>

impl<'tcx> PartialEq<Predicate<'tcx>> for Predicate<'tcx>[src]

impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for Predicate<'tcx>[src]

type Output = P

type Error = Error

impl<'tcx> TypeFoldable<'tcx> for Predicate<'tcx>[src]

Auto Trait Implementations

impl<'tcx> !RefUnwindSafe for Predicate<'tcx>

impl<'tcx> !Send for Predicate<'tcx>

impl<'tcx> !Sync for Predicate<'tcx>

impl<'tcx> Unpin for Predicate<'tcx>

impl<'tcx> !UnwindSafe for Predicate<'tcx>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized

impl<'tcx, T> ArenaAllocatable<'tcx, ()> for T where
    T: Copy

impl<T> Borrow<T> for T where
    T: ?Sized

impl<T> BorrowMut<T> for T where
    T: ?Sized

impl<'a, T> Captures<'a> for T where
    T: ?Sized

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 

impl<T> MaybeResult<T> for T[src]

type Error = !

impl<'tcx, T> Subst<'tcx> for T where
    T: TypeFoldable<'tcx>, 

impl<T> ToOwned for T where
    T: Clone

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> WithConstness for T[src]