pub struct FreeRegionsVisitor<'tcx, OP>{
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_region(&mut self, r: Region<'tcx>)
fn visit_ty(&mut self, ty: Ty<'tcx>)
type Result = ()
fn visit_binder<T>(&mut self, t: &Binder<I, T>) -> Self::Resultwhere
T: TypeVisitable<I>,
fn visit_const(&mut self, c: <I as Interner>::Const) -> Self::Result
fn visit_predicate(&mut self, p: <I as Interner>::Predicate) -> Self::Result
fn visit_clauses(&mut self, c: <I as Interner>::Clauses) -> Self::Result
fn visit_error( &mut self, _guar: <I as Interner>::ErrorGuaranteed, ) -> Self::Result
Auto Trait Implementations§
impl<'tcx, OP> DynSend for FreeRegionsVisitor<'tcx, OP>where
OP: DynSend,
impl<'tcx, OP> DynSync for FreeRegionsVisitor<'tcx, OP>where
OP: DynSync,
impl<'tcx, OP> Freeze for FreeRegionsVisitor<'tcx, OP>where
OP: Freeze,
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
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<P> IntoQueryParam<P> for P
impl<P> IntoQueryParam<P> for P
fn into_query_param(self) -> P
Source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
Source§impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
impl<Tcx, T> Value<Tcx> for Twhere
Tcx: DepContext,
default fn from_cycle_error( tcx: Tcx, cycle_error: &CycleError, _guar: ErrorGuaranteed, ) -> T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<T> ErasedDestructor for Twhere
T: 'static,
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.