Struct OncePtr

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

An atomic pointer that can only be initialized once.

Implementations§

Source§

impl<T> OncePtr<T>

Source

pub fn null() -> Self

Create a new uninitialized pointer.

Source

pub fn new(value: T) -> Self

Create a new initialized pointer for the given data.

Source

pub fn store(&self, value: T)

Initialize the store with the provided value.

§Panics

If the store is already initialized before.

Source

pub fn is_null(&self) -> bool

Returns true if the store is not initialized and is null.

Source

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

Load the atomic store and return a reference to the underlying data or None if the store is not initialized yet.

Source

pub unsafe fn load_unchecked(&self) -> &T

Load the atomic store and return a reference to the underlying data without checking if it’s null.

§Safety

It is up to the caller to ensure that the pointer is not null.

Source

pub fn load_mut(&mut self) -> Option<&mut T>

Load the atomic store and return a mutable reference to the underlying data or None if the store is not initialized yet.

This is safe because the mutable reference guarantees that no other threads are concurrently accessing the atomic data.

Source

pub unsafe fn load_mut_unchecked(&mut self) -> &mut T

Load the atomic store and return a mutable reference to the underlying data without checking if it’s null.

§Safety

It is up to the caller to ensure that the pointer is not null.

Source

pub fn into_inner(self) -> Option<T>

Returns the data owned by this store.

Trait Implementations§

Source§

impl<T> Default for OncePtr<T>
where T: Default,

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<T> Drop for OncePtr<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T> From<T> for OncePtr<T>

Source§

fn from(value: T) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<T> !Freeze for OncePtr<T>

§

impl<T> RefUnwindSafe for OncePtr<T>

§

impl<T> Send for OncePtr<T>

§

impl<T> Sync for OncePtr<T>

§

impl<T> Unpin for OncePtr<T>

§

impl<T> UnwindSafe for OncePtr<T>
where T: RefUnwindSafe,

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<!> for T

Source§

fn from(t: !) -> T

Converts to this type from the input type.
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.