pub struct AtomicIsize(/* private fields */);Expand description
Creusot wrapper around std::sync::atomic::AtomicIsize.
Implementations§
Source§impl AtomicIsize
impl AtomicIsize
Sourcepub fn new(
val: isize,
view: Ghost<&mut SyncView>,
) -> (Self, Ghost<Box<Perm<AtomicIsize>>>)
pub fn new( val: isize, view: Ghost<&mut SyncView>, ) -> (Self, Ghost<Box<Perm<AtomicIsize>>>)
ensures
*result.1.val() == FMap::singleton(result.0.get_timestamp(^view), (val, **view))
ensures
*result.1.ward() == result.0terminates
Sourcepub fn load<F>(&self, f: Ghost<F>) -> isize
pub fn load<F>(&self, f: Ghost<F>) -> isize
Wrapper for std::sync::atomic::AtomicIsize::load.
requires
forall<c: &LoadCommitter<$type, Self>> c.ward() == *self ==> f.precondition((c,))
ensures
exists<c: &LoadCommitter<$type, Self>> c.ward() == *self && c.val() == result && f.postcondition_once((c,), ())
Sourcepub fn store<F>(&self, val: isize, f: Ghost<F>)
pub fn store<F>(&self, val: isize, f: Ghost<F>)
Wrapper for std::sync::atomic::AtomicIsize::store.
requires
forall<c: &mut StoreCommitter<$type, Self>> !c.shot() ==> c.ward() == *self ==> c.val() == val ==> f.precondition((c,)) && f.postcondition_once((c,), ()) ==> (^c).shot()
ensures
exists<c: &mut StoreCommitter<$type, Self>> !c.shot() && c.ward() == *self && c.val() == val && f.postcondition_once((c,), ())
Trait Implementations§
Source§impl Container for AtomicIsize
impl Container for AtomicIsize
Source§impl HasTimestamp for AtomicIsize
impl HasTimestamp for AtomicIsize
Source§fn get_timestamp(self, _: SyncView) -> Timestamp
fn get_timestamp(self, _: SyncView) -> Timestamp
logic(opaque) ⚠
Source§fn get_timestamp_monotonic(self, x: SyncView, y: SyncView)
fn get_timestamp_monotonic(self, x: SyncView, y: SyncView)
logic(law) ⚠
requires
x.le_log(y)ensures
self.get_timestamp(x).le_log(self.get_timestamp(y))Auto Trait Implementations§
impl !Freeze for AtomicIsize
impl Objective for AtomicIsize
impl RefUnwindSafe for AtomicIsize
impl Send for AtomicIsize
impl Sync for AtomicIsize
impl Unpin for AtomicIsize
impl UnsafeUnpin for AtomicIsize
impl UnwindSafe for AtomicIsize
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