RwArc

Struct RwArc 

Source
pub struct RwArc<T>(/* private fields */);
Expand description

A reference-counting pointer with read-write capabilities.

This is essentially Arc<RwLock<T>>, so it can provide read-write capabilities through RwArc::read and RwArc::write.

In addition, this allows to derive another reference-counting pointer with read-only capabilities (RoArc) via RwArc::clone_ro.

The purpose of having this type is to allow lockless (read) access to the underlying data when there is only one RwArc instance for the particular allocation (note that there can be any number of RoArc instances for that allocation). See the [RwArc::get] method for more details.

Implementations§

Source§

impl<T> RwArc<T>

Source

pub closed spec fn wf(self) -> bool

Source§

impl<T> RwArc<T>

Source

pub exec fn new(data: T) -> Self

Creates a new RwArc<T>.

Source

pub exec fn read(&self) -> RwLockReadGuard<'_, T, PreemptDisabled>

Acquires the read lock for immutable access.

Source

pub exec fn write(&self) -> RwLockWriteGuard<'_, T, PreemptDisabled>

Acquires the write lock for mutable access.

Source

pub exec fn clone_ro(&self) -> RoArc<T>

Clones a RoArc that points to the same allocation.

Source§

impl<T: Clone> RwArc<T>

Source

pub exec fn get_cloned(&self) -> T

Returns the contained value by cloning it.

Trait Implementations§

Source§

impl<T> Clone for RwArc<T>

Source§

exec fn clone(&self) -> Self

returns
self,
1.0.0 · Source§

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

Performs copy-assignment from source. Read more

Auto Trait Implementations§

§

impl<T> Freeze for RwArc<T>

§

impl<T> !RefUnwindSafe for RwArc<T>

§

impl<T> Send for RwArc<T>
where T: Send + Sync,

§

impl<T> Sync for RwArc<T>
where T: Send + Sync,

§

impl<T> Unpin for RwArc<T>

§

impl<T> !UnwindSafe for RwArc<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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, VERUS_SPEC__A> FromSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: From<T>,

§

fn obeys_from_spec() -> bool

§

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.

§

impl<T, VERUS_SPEC__A> IntoSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: Into<T>,

§

fn obeys_into_spec() -> bool

§

fn into_spec(self) -> T

§

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

§

fn obeys_into_spec() -> bool

§

fn into_spec(self) -> U

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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 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.
§

impl<T, VERUS_SPEC__A> TryFromSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: TryFrom<T>,

§

fn obeys_try_from_spec() -> bool

§

fn try_from_spec( v: T, ) -> Result<VERUS_SPEC__A, <VERUS_SPEC__A as TryFrom<T>>::Error>

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.
§

impl<T, VERUS_SPEC__A> TryIntoSpec<T> for VERUS_SPEC__A
where VERUS_SPEC__A: TryInto<T>,

§

fn obeys_try_into_spec() -> bool

§

fn try_into_spec(self) -> Result<T, <VERUS_SPEC__A as TryInto<T>>::Error>

§

impl<T, U> TryIntoSpecImpl<U> for T
where U: TryFrom<T>,

§

fn obeys_try_into_spec() -> bool

§

fn try_into_spec(self) -> Result<U, <U as TryFrom<T>>::Error>