Struct vstd::atomic::PAtomicBool

source ·
pub struct PAtomicBool { /* private fields */ }

Implementations§

source§

impl PAtomicBool

source

pub spec fn id(&self) -> int

source

pub const exec fn new(i: bool) -> res : (PAtomicBool, Tracked<PermissionBool>)

ensures
equal(
    res.1@.view(),
    PermissionDataBool {
        patomic: res.0.id(),
        value: i,
    },
),
source

pub exec fn load(&self, Tracked(perm): Tracked<&PermissionBool>) -> ret : bool

requires
equal(self.id(), perm.view().patomic),
ensures
equal(perm.view().value, ret),
source

pub exec fn store(&self, Tracked(perm): Tracked<&mut PermissionBool>, v: bool)

requires
equal(self.id(), old(perm).view().patomic),
ensures
equal(perm.view().value, v) && equal(self.id(), perm.view().patomic),
source

pub exec fn compare_exchange( &self, verus_tmp_perm: Tracked<&mut PermissionBool>, current: bool, new: bool ) -> ret : Result<bool, bool>

requires
equal(self.id(), old(perm).view().patomic),
ensures
equal(self.id(), perm.view().patomic)
    && match ret {
        Result::Ok(r) => {
            current == old(perm).view().value && equal(perm.view().value, new)
                && equal(r, old(perm).view().value)
        }
        Result::Err(r) => {
            current != old(perm).view().value
                && equal(perm.view().value, old(perm).view().value)
                && equal(r, old(perm).view().value)
        }
    },
source

pub exec fn compare_exchange_weak( &self, verus_tmp_perm: Tracked<&mut PermissionBool>, current: bool, new: bool ) -> ret : Result<bool, bool>

requires
equal(self.id(), old(perm).view().patomic),
ensures
equal(self.id(), perm.view().patomic)
    && match ret {
        Result::Ok(r) => {
            current == old(perm).view().value && equal(perm.view().value, new)
                && equal(r, old(perm).view().value)
        }
        Result::Err(r) => {
            equal(perm.view().value, old(perm).view().value)
                && equal(r, old(perm).view().value)
        }
    },
source

pub exec fn swap( &self, verus_tmp_perm: Tracked<&mut PermissionBool>, v: bool ) -> ret : bool

requires
equal(self.id(), old(perm).view().patomic),
ensures
equal(perm.view().value, v) && equal(old(perm).view().value, ret)
    && equal(self.id(), perm.view().patomic),
source

pub exec fn into_inner(self, Tracked(perm): Tracked<PermissionBool>) -> ret : bool

requires
equal(self.id(), perm.view().patomic),
ensures
equal(perm.view().value, ret),
source

pub exec fn fetch_and( &self, verus_tmp_perm: Tracked<&mut PermissionBool>, n: bool ) -> ret : bool

requires
equal(self.id(), old(perm).view().patomic),
ensures
equal(old(perm).view().value, ret) && perm.view().patomic == old(perm).view().patomic
    && perm.view().value == (old(perm).view().value && n),
source

pub exec fn fetch_or( &self, verus_tmp_perm: Tracked<&mut PermissionBool>, n: bool ) -> ret : bool

requires
equal(self.id(), old(perm).view().patomic),
ensures
equal(old(perm).view().value, ret) && perm.view().patomic == old(perm).view().patomic
    && perm.view().value == (old(perm).view().value || n),
source

pub exec fn fetch_xor( &self, verus_tmp_perm: Tracked<&mut PermissionBool>, n: bool ) -> ret : bool

requires
equal(self.id(), old(perm).view().patomic),
ensures
equal(old(perm).view().value, ret) && perm.view().patomic == old(perm).view().patomic
    && perm.view().value
        == ((old(perm).view().value && !n) || (!old(perm).view().value && n)),
source

pub exec fn fetch_nand( &self, verus_tmp_perm: Tracked<&mut PermissionBool>, n: bool ) -> ret : bool

requires
equal(self.id(), old(perm).view().patomic),
ensures
equal(old(perm).view().value, ret) && perm.view().patomic == old(perm).view().patomic
    && perm.view().value == !(old(perm).view().value && n),

Auto Trait Implementations§

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, 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, U> TryFrom<U> for T
where 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 T
where 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.