Enum rustc_trans::middle::ty::PredicateUnstable
[-] [+]
[src]
pub enum Predicate<'tcx> { Trait(Binder<TraitPredicate<'tcx>>), Equate(Binder<EquatePredicate<'tcx>>), RegionOutlives(Binder<OutlivesPredicate<Region, Region>>), TypeOutlives(Binder<OutlivesPredicate<&'tcx TyS<'tcx>, Region>>), Projection(Binder<ProjectionPredicate<'tcx>>), }
Variants
Methods
impl<'tcx> Predicate<'tcx>
fn subst_supertrait(&self, tcx: &ctxt<'tcx>, trait_ref: &Binder<Rc<TraitRef<'tcx>>>) -> Predicate<'tcx>
Performs a substituion 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>
fn walk_tys(&self) -> IntoIter<&'tcx TyS<'tcx>>
Iterates over the types in this predicate. Note that in all cases this is skipping over a binder, so late-bound regions with depth 0 are bound by the predicate.