pub struct AtomicU64(/* private fields */);Expand description
Creusot wrapper around std::sync::atomic::AtomicU64.
Implementations§
Source§impl AtomicU64
impl AtomicU64
Sourcepub fn new(
val: u64,
view: Ghost<&mut SyncView>,
) -> (Self, Ghost<Box<Perm<AtomicU64>>>)
pub fn new( val: u64, view: Ghost<&mut SyncView>, ) -> (Self, Ghost<Box<Perm<AtomicU64>>>)
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>) -> u64
pub fn load<F>(&self, f: Ghost<F>) -> u64
Wrapper for std::sync::atomic::AtomicU64::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: u64, f: Ghost<F>)
pub fn store<F>(&self, val: u64, f: Ghost<F>)
Wrapper for std::sync::atomic::AtomicU64::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 HasTimestamp for AtomicU64
impl HasTimestamp for AtomicU64
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 AtomicU64
impl Objective for AtomicU64
impl RefUnwindSafe for AtomicU64
impl Send for AtomicU64
impl Sync for AtomicU64
impl Unpin for AtomicU64
impl UnsafeUnpin for AtomicU64
impl UnwindSafe for AtomicU64
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