pub(super) struct LocationState {
    permission: Permission,
    initialized: bool,
    latest_foreign_access: Option<AccessKind>,
}
Expand description

Data for a single location.

Fields§

§permission: Permission

This pointer’s current permission

§initialized: bool

A location is initialized when it is child accessed for the first time, and it then stays initialized forever. Before initialization we still apply some preemptive transitions on permission to know what to do in case it ever gets initialized, but these can never cause any immediate UB. There can however be UB the moment we attempt to initialize (i.e. child-access) because some foreign access done between the creation and the initialization is incompatible with child accesses.

§latest_foreign_access: Option<AccessKind>

Strongest foreign access whose effects have already been applied to this node and all its children since the last child access. This is None if the most recent access is a child access, Some(Write) if at least one foreign write access has been applied since the previous child access, and Some(Read) if at least one foreign read and no foreign write have occurred since the last child access.

Implementations§

source§

impl LocationState

source

fn new(permission: Permission) -> Self

Default initial state has never been accessed and has been subjected to no foreign access.

source

fn with_access(self) -> Self

Record that this location was accessed through a child pointer by marking it as initialized

source

pub fn is_initialized(&self) -> bool

source

pub fn permission(&self) -> Permission

Trait Implementations§

source§

impl Clone for LocationState

source§

fn clone(&self) -> LocationState

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for LocationState

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq<LocationState> for LocationState

source§

fn eq(&self, other: &LocationState) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for LocationState

source§

impl Eq for LocationState

source§

impl StructuralEq for LocationState

source§

impl StructuralPartialEq for LocationState

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere 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 Twhere 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> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere 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 Twhere 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.
§

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

§

fn vzip(self) -> V

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.

Size:3 bytes