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: OP

Trait Implementations§

source§

impl<'tcx, OP> TypeVisitor<TyCtxt<'tcx>> for FreeRegionsVisitor<'tcx, OP>
where OP: FnMut(Region<'tcx>),

source§

fn visit_binder<T: TypeVisitable<TyCtxt<'tcx>>>( &mut self, t: &Binder<'tcx, T> ) -> ControlFlow<Self::BreakTy>

source§

fn visit_region(&mut self, r: Region<'tcx>) -> ControlFlow<Self::BreakTy>

source§

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> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

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.