[−][src]Struct rustc_trait_selection::infer::outlives::verify::VerifyBoundCx
The TypeOutlives struct has the job of "lowering" a T: 'a
obligation into a series of 'a: 'b constraints and "verifys", as
described on the module comment. The final constraints are emitted
via a "delegate" of type D -- this is usually the infcx, which
accrues them into the region_obligations code, but for NLL we
use something else.
Fields
tcx: TyCtxt<'tcx>region_bound_pairs: &'cx Vec<(&'tcx RegionKind, GenericKind<'tcx>)>implicit_region_bound: Option<&'tcx RegionKind>param_env: ParamEnv<'tcx>Implementations
impl<'cx, 'tcx> VerifyBoundCx<'cx, 'tcx>[src]
pub fn new(
tcx: TyCtxt<'tcx>,
region_bound_pairs: &'cx Vec<(&'tcx RegionKind, GenericKind<'tcx>)>,
implicit_region_bound: Option<&'tcx RegionKind>,
param_env: ParamEnv<'tcx>
) -> VerifyBoundCx<'cx, 'tcx>[src]
tcx: TyCtxt<'tcx>,
region_bound_pairs: &'cx Vec<(&'tcx RegionKind, GenericKind<'tcx>)>,
implicit_region_bound: Option<&'tcx RegionKind>,
param_env: ParamEnv<'tcx>
) -> VerifyBoundCx<'cx, 'tcx>
pub fn generic_bound(&self, generic: GenericKind<'tcx>) -> VerifyBound<'tcx>[src]
Returns a "verify bound" that encodes what we know about
generic and the regions it outlives.
pub fn projection_approx_declared_bounds_from_env(
&self,
projection_ty: ProjectionTy<'tcx>
) -> Vec<OutlivesPredicate<&'tcx TyS<'tcx>, &'tcx RegionKind>>[src]
&self,
projection_ty: ProjectionTy<'tcx>
) -> Vec<OutlivesPredicate<&'tcx TyS<'tcx>, &'tcx RegionKind>>
Given a projection like T::Item, searches the environment
for where-clauses like T::Item: 'a. Returns the set of
regions 'a that it finds.
This is an "approximate" check -- it may not find all
applicable bounds, and not all the bounds it returns can be
relied upon. In particular, this check ignores region
identity. So, for example, if we have <T as Trait<'0>>::Item where '0 is a region variable, and the
user has <T as Trait<'a>>::Item: 'b in the environment, then
the clause from the environment only applies if '0 = 'a,
which we don't know yet. But we would still include 'b in
this list.
pub fn projection_declared_bounds_from_trait(
&self,
projection_ty: ProjectionTy<'tcx>
) -> impl Iterator<Item = &'tcx RegionKind> + Captures<'tcx> + 'cx[src]
&self,
projection_ty: ProjectionTy<'tcx>
) -> impl Iterator<Item = &'tcx RegionKind> + Captures<'tcx> + 'cx
Searches the where-clauses in scope for regions that
projection_ty is known to outlive. Currently requires an
exact match.
pub fn projection_bound(
&self,
projection_ty: ProjectionTy<'tcx>
) -> VerifyBound<'tcx>[src]
&self,
projection_ty: ProjectionTy<'tcx>
) -> VerifyBound<'tcx>
Auto Trait Implementations
impl<'cx, 'tcx> !RefUnwindSafe for VerifyBoundCx<'cx, 'tcx>
impl<'cx, 'tcx> !Send for VerifyBoundCx<'cx, 'tcx>
impl<'cx, 'tcx> !Sync for VerifyBoundCx<'cx, 'tcx>
impl<'cx, 'tcx> Unpin for VerifyBoundCx<'cx, 'tcx> where
'tcx: 'cx,
'tcx: 'cx,
impl<'cx, 'tcx> !UnwindSafe for VerifyBoundCx<'cx, 'tcx>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<T> From<T> for T[src]
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
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.
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.