Skip to main content

SafetySink

Struct SafetySink 

Source
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: RelevantPlaces

Caller-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> 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
§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

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

Source§

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>,

Source§

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V