struct SafetySink<'target, 'tcx> {
checkpoint: &'target Checkpoint<'tcx>,
property: &'target Property<'tcx>,
roots: RelevantPlaces,
}Expand description
One safety obligation whose arguments have been bound to caller MIR locals.
A sink starts as a Property written in the callee’s namespace, for example
NonNull(_ptr). bind_callsite_roots rewrites the initial relevance roots
so they point at the caller locals passed into the unsafe checkpoint. The
loop planner can then ask whether those caller locals depend on loop state.
Fields§
§checkpoint: &'target Checkpoint<'tcx>Unsafe call, raw pointer dereference, or static mut synthetic checkpoint.
property: &'target Property<'tcx>Safety property checked at this sink.
roots: RelevantPlacesCaller-side MIR locals and places relevant to property.
Auto Trait Implementations§
impl<'target, 'tcx> !RefUnwindSafe for SafetySink<'target, 'tcx>
impl<'target, 'tcx> !UnwindSafe for SafetySink<'target, 'tcx>
impl<'target, 'tcx> DynSend for SafetySink<'target, 'tcx>
impl<'target, 'tcx> DynSync for SafetySink<'target, 'tcx>
impl<'target, 'tcx> Freeze for SafetySink<'target, 'tcx>
impl<'target, 'tcx> Send for SafetySink<'target, 'tcx>
impl<'target, 'tcx> Sync for SafetySink<'target, 'tcx>
impl<'target, 'tcx> Unpin for SafetySink<'target, 'tcx>
impl<'target, 'tcx> UnsafeUnpin for SafetySink<'target, 'tcx>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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 more