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

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

Fields

inner: &'tcx PredicateInner<'tcx>

Implementations

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, tcx: TyCtxt<'tcx>) -> Binder<PredicateAtom<'tcx>>[src]

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(
    self,
    tcx: TyCtxt<'tcx>,
    trait_ref: &PolyTraitRef<'tcx>
) -> Predicate<'tcx>
[src]

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<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> Display for Predicate<'tcx>[src]

impl<'tcx> EncodableWithShorthand 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<'_x, 'a, 'tcx> SpecializedDecoder<Predicate<'_x>> for CacheDecoder<'a, 'tcx>[src]

impl<'a, 'b, 'tcx, E> SpecializedEncoder<Predicate<'b>> for CacheEncoder<'a, 'tcx, E> where
    E: 'a + TyEncoder
[src]

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

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

impl<'_> UseSpecializedEncodable for Predicate<'_>[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
[src]

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

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

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

impl<T> Decodable for T where
    T: UseSpecializedDecodable
[src]

impl<Ctxt, T> DepNodeParams<Ctxt> for T where
    Ctxt: DepContext,
    T: HashStable<<Ctxt as DepContext>::StableHashingContext> + Debug
[src]

impl<T> Encodable for T where
    T: UseSpecializedEncodable + ?Sized
[src]

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

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

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

type Error = !

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

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

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

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<T> WithConstness for T[src]