[−][src]Struct rustc_middle::ty::Predicate
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) -> 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(
self,
tcx: TyCtxt<'tcx>
) -> Binder<PredicateAtom<'tcx>>[src]
self,
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(
self,
tcx: TyCtxt<'tcx>,
trait_ref: &PolyTraitRef<'tcx>
) -> Predicate<'tcx>[src]
self,
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<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>
pub fn variant(&self) -> &Self::Variant[src]
impl<'tcx> Eq for Predicate<'tcx>[src]
impl<'_> Hash for Predicate<'_>[src]
pub fn hash<H: Hasher>(&self, s: &mut H)[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher, 1.3.0[src]
H: Hasher,
impl<'a, 'tcx> HashStable<StableHashingContext<'a>> for Predicate<'tcx>[src]
pub fn hash_stable(
&self,
hcx: &mut StableHashingContext<'a>,
hasher: &mut StableHasher
)[src]
&self,
hcx: &mut StableHashingContext<'a>,
hasher: &mut StableHasher
)
impl<'tcx, '__lifted> Lift<'__lifted> for Predicate<'tcx>[src]
type Lifted = Predicate<'__lifted>
pub fn lift_to_tcx(
self,
__tcx: TyCtxt<'__lifted>
) -> Option<Predicate<'__lifted>>[src]
self,
__tcx: TyCtxt<'__lifted>
) -> Option<Predicate<'__lifted>>
impl<'tcx> PartialEq<Predicate<'tcx>> for Predicate<'tcx>[src]
pub fn eq(&self, other: &Self) -> bool[src]
#[must_use]pub fn ne(&self, other: &Rhs) -> bool1.0.0[src]
impl<'tcx, P: PrettyPrinter<'tcx>> Print<'tcx, P> for Predicate<'tcx>[src]
type Output = P
type Error = Error
pub fn print(&self, cx: P) -> Result<Self::Output, Self::Error>[src]
impl<'tcx> TypeFoldable<'tcx> for Predicate<'tcx>[src]
pub fn super_fold_with<F: TypeFolder<'tcx>>(self, folder: &mut F) -> Self[src]
pub fn super_visit_with<V: TypeVisitor<'tcx>>(
&self,
visitor: &mut V
) -> ControlFlow<V::BreakTy>[src]
&self,
visitor: &mut V
) -> ControlFlow<V::BreakTy>
pub fn visit_with<V: TypeVisitor<'tcx>>(
&self,
visitor: &mut V
) -> ControlFlow<V::BreakTy>[src]
&self,
visitor: &mut V
) -> ControlFlow<V::BreakTy>
pub fn has_vars_bound_at_or_above(&self, binder: DebruijnIndex) -> bool[src]
pub fn has_type_flags(&self, flags: TypeFlags) -> bool[src]
pub fn fold_with<F: TypeFolder<'tcx>>(self, folder: &mut F) -> Self[src]
pub fn has_vars_bound_above(&self, binder: DebruijnIndex) -> bool[src]
pub fn has_escaping_bound_vars(&self) -> bool[src]
pub fn has_projections(&self) -> bool[src]
pub fn has_opaque_types(&self) -> bool[src]
pub fn references_error(&self) -> bool[src]
pub fn has_param_types_or_consts(&self) -> bool[src]
pub fn has_infer_regions(&self) -> bool[src]
pub fn has_infer_types(&self) -> bool[src]
pub fn has_infer_types_or_consts(&self) -> bool[src]
pub fn needs_infer(&self) -> bool[src]
pub fn has_placeholders(&self) -> bool[src]
pub fn needs_subst(&self) -> bool[src]
pub fn has_free_regions(&self) -> bool[src]
pub fn has_erased_regions(&self) -> bool[src]
pub fn has_erasable_regions(&self) -> bool[src]
pub fn is_global(&self) -> bool[src]
pub fn has_late_bound_regions(&self) -> bool[src]
pub fn still_further_specializable(&self) -> bool[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]
T: 'static + ?Sized,
impl<'tcx, T> ArenaAllocatable<'tcx, ()> for T where
T: Copy, [src]
T: Copy,
pub fn allocate_on(Self, &'a Arena<'tcx>) -> &'a mut T[src]
pub fn allocate_from_iter(
&'a Arena<'tcx>,
impl IntoIterator<Item = T>
) -> &'a mut [T][src]
&'a Arena<'tcx>,
impl IntoIterator<Item = T>
) -> &'a mut [T]
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T[src]
impl<'a, T> Captures<'a> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> MaybeResult<T> for T[src]
type Error = !
pub fn from(Result<T, <T as MaybeResult<T>>::Error>) -> T[src]
pub fn to_result(self) -> Result<T, <T as MaybeResult<T>>::Error>[src]
impl<'tcx, T> Subst<'tcx> for T where
T: TypeFoldable<'tcx>, [src]
T: TypeFoldable<'tcx>,
pub fn subst_spanned(Self, TyCtxt<'tcx>, &[GenericArg<'tcx>], Option<Span>) -> T[src]
pub fn subst(self, tcx: TyCtxt<'tcx>, substs: &[GenericArg<'tcx>]) -> Self[src]
impl<T> ToOwned for T where
T: Clone, [src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn clone_into(&self, target: &mut T)[src]
impl<T> ToString for T where
T: Display + ?Sized, [src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.