PointsToData

Struct PointsToData 

Source
pub struct PointsToData<T> {
    pub ptr: *mut T,
    pub opt_value: MemContents<T>,
}
Expand description

Data associated with a PointsTo permission. We keep track of both the pointer and the (potentially uninitialized) value it points to.

If opt_value is Init(T), this signifies that ptr points to initialized memory, and the value of opt_value is consistent with the bytes ptr points to, We also have all the ghost state associated with type T.

If opt_value is Uninit, then we have no knowledge about what’s in memory, and we assume ptr points to uninitialized memory. (To be pedantic, the bytes might be initialized in Rust’s abstract machine, but we don’t know, so we have to pretend they’re uninitialized.)

Fields§

§ptr: *mut T§opt_value: MemContents<T>

Auto Trait Implementations§

§

impl<T> Freeze for PointsToData<T>
where T: Freeze,

§

impl<T> RefUnwindSafe for PointsToData<T>
where T: RefUnwindSafe,

§

impl<T> !Send for PointsToData<T>

§

impl<T> !Sync for PointsToData<T>

§

impl<T> Unpin for PointsToData<T>
where T: Unpin,

§

impl<T> UnwindSafe for PointsToData<T>

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, VERUS_SPEC__A> FromSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: From<T>,

Source§

exec fn obeys_from_spec() -> bool

Source§

exec fn from_spec(v: T) -> VERUS_SPEC__A

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, VERUS_SPEC__A> IntoSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: Into<T>,

Source§

exec fn obeys_into_spec() -> bool

Source§

exec fn into_spec(self) -> T

Source§

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

Source§

open spec fn obeys_into_spec() -> bool

{ <U as FromSpec<Self>>::obeys_from_spec() }
Source§

open spec fn into_spec(self) -> U

{ U::from_spec(self) }
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.