Struct rustc_infer::infer::outlives::for_liveness::FreeRegionsVisitor
source · pub struct FreeRegionsVisitor<'tcx, OP: FnMut(Region<'tcx>)> {
pub tcx: TyCtxt<'tcx>,
pub param_env: ParamEnv<'tcx>,
pub op: OP,
}Expand description
Visits free regions in the type that are relevant for liveness computation.
These regions are passed to OP.
Specifically, we visit all of the regions of types recursively, except if
the type is an alias, we look at the outlives bounds in the param-env
and alias’s item bounds. If there is a unique outlives bound, then visit
that instead. If there is not a unique but there is a 'static outlives
bound, then don’t visit anything. Otherwise, walk through the opaque’s
regions structurally.
Fields§
§tcx: TyCtxt<'tcx>§param_env: ParamEnv<'tcx>§op: OPTrait Implementations§
source§impl<'tcx, OP> TypeVisitor<TyCtxt<'tcx>> for FreeRegionsVisitor<'tcx, OP>
impl<'tcx, OP> TypeVisitor<TyCtxt<'tcx>> for FreeRegionsVisitor<'tcx, OP>
fn visit_binder<T: TypeVisitable<TyCtxt<'tcx>>>( &mut self, t: &Binder<'tcx, T> ) -> ControlFlow<Self::BreakTy>
fn visit_region(&mut self, r: Region<'tcx>) -> ControlFlow<Self::BreakTy>
fn visit_ty(&mut self, ty: Ty<'tcx>) -> ControlFlow<Self::BreakTy>
type BreakTy = !
Auto Trait Implementations§
impl<'tcx, OP> !RefUnwindSafe for FreeRegionsVisitor<'tcx, OP>
impl<'tcx, OP> !Send for FreeRegionsVisitor<'tcx, OP>
impl<'tcx, OP> !Sync for FreeRegionsVisitor<'tcx, OP>
impl<'tcx, OP> Unpin for FreeRegionsVisitor<'tcx, OP>where
OP: Unpin,
impl<'tcx, OP> !UnwindSafe for FreeRegionsVisitor<'tcx, OP>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.