Struct rafx_base::atomic_once_cell_array::AtomicOnceCellArray[][src]

pub struct AtomicOnceCellArray<T> { /* fields omitted */ }
Expand description

A fixed-size array with capacity determined at run-time. The elements of the array are uninitialized. Elements may be initialized with set and then retrieved as a reference with get. Calling set is thread-safe. The array will panic if the capacity is exceeded, or the index is out of range, or the set function is called more than once on an index when T is not zero-sized. The array will only drop initialized elements.

Guarantees

  • The array will not allocate if capacity is 0 or if T is zero-sized.
  • The allocated memory will not be default initialized.
  • Elements initialized by set are immutable.
  • The synchronization is lock-free.

Zero-sized Types

When T is zero-sized, the array does not track individual indices and instead only maintains a count of how many instances of T have been set in the array. On drop, the array will drop that many instances of T. The array will panic if the number of calls to set exceeds the capacity.

Implementations

impl<T> AtomicOnceCellArray<T>[src]

pub fn with_capacity(capacity: usize) -> Self[src]

pub fn set(&self, index: usize, val: T)[src]

pub fn get(&self, index: usize) -> &T[src]

pub fn capacity(&self) -> usize[src]

Trait Implementations

impl<T> Drop for AtomicOnceCellArray<T>[src]

fn drop(&mut self)[src]

Executes the destructor for this type. Read more

impl<T> Sync for AtomicOnceCellArray<T>[src]

Auto Trait Implementations

impl<T> !RefUnwindSafe for AtomicOnceCellArray<T>

impl<T> Send for AtomicOnceCellArray<T> where
    T: Send

impl<T> Unpin for AtomicOnceCellArray<T>

impl<T> UnwindSafe for AtomicOnceCellArray<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

impl<T> Downcast for T where
    T: Any
[src]

pub fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>[src]

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait. Read more

pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>[src]

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait. Read more

pub fn as_any(&self) -> &(dyn Any + 'static)[src]

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s. Read more

pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)[src]

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s. Read more

impl<T> DowncastSync for T where
    T: Any + Send + Sync
[src]

pub fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + 'static + Sync + Send>[src]

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait. Read more

impl<T> From<T> for T[src]

pub fn from(t: T) -> T[src]

Performs the conversion.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

pub fn into(self) -> U[src]

Performs the conversion.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<T> Resource for T where
    T: Downcast + Send + Sync
[src]