Skip to main content

SharedOnceCell

Struct SharedOnceCell 

Source
pub struct SharedOnceCell<T: Copy + 'static> { /* private fields */ }

Implementations§

Source§

impl<T: Copy + 'static> SharedOnceCell<T>

Source

pub fn create(path: impl AsRef<Path>) -> Result<Self, SharedOnceError>

Source

pub fn open(path: impl AsRef<Path>) -> Result<Self, SharedOnceError>

Source

pub fn is_initialized(&self) -> bool

True when the cell has been initialised.

Source

pub fn get(&self) -> Option<T>

Get the value if initialised; otherwise return None. Non-blocking; never invokes the initialiser.

Source

pub fn set(&self, value: T) -> bool

Try to write the value. Returns true if this caller won the init race, false if the cell was already initialised or another init is in progress.

Source

pub fn get_or_init<F: FnOnce() -> T>(&self, init: F) -> T

Get the cached value, or run init to produce it. The first caller across all processes runs init; subsequent callers spin until the value is published and return that value.

Source

pub fn flush_async(&self) -> Result<(), SharedOnceError>

Non-blocking flush: schedules a writeback via the OS. Note: Windows is only partially async (sync to page cache, not to disk).

Source

pub fn flush(&self) -> Result<(), SharedOnceError>

Trait Implementations§

Source§

impl<T: Copy + Send + Sync + 'static> AdaptiveInstance for SharedOnceCell<T>

Source§

fn header(&self) -> &HandshakeHeader

Source§

fn ring(&self) -> &ObservationRing

Source§

fn make_policy(&self) -> Box<dyn Policy>

Source§

fn apply_migration(&self, new_tag: u32)

Called by the sidecar when the policy returns a new strategy tag. Default implementation: just set the tag on the header. Primitives that need heavier migration (data-layout swap) override this to perform the swap before (or after) updating the tag.
Source§

impl<T: Copy + Send + 'static> Send for SharedOnceCell<T>

Source§

impl<T: Copy + Sync + 'static> Sync for SharedOnceCell<T>

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>,

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