Struct rustc_trait_selection::infer::outlives::verify::VerifyBoundCx
source · pub struct VerifyBoundCx<'cx, 'tcx> {
tcx: TyCtxt<'tcx>,
region_bound_pairs: &'cx IndexSet<OutlivesPredicate<GenericKind<'tcx>, Region<'tcx>>, BuildHasherDefault<FxHasher>>,
implicit_region_bound: Option<Region<'tcx>>,
param_env: ParamEnv<'tcx>,
}
Expand description
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 IndexSet<OutlivesPredicate<GenericKind<'tcx>, Region<'tcx>>, BuildHasherDefault<FxHasher>>
implicit_region_bound: Option<Region<'tcx>>
During borrowck, if there are no outlives bounds on a generic
parameter T
, we assume that T: 'in_fn_body
holds.
Outside of borrowck the only way to prove T: '?0
is by
setting '?0
to 'empty
.
param_env: ParamEnv<'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,
impl<'cx, 'tcx> !UnwindSafe for VerifyBoundCx<'cx, 'tcx>
Blanket Implementations
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Layout
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 32 bytes