Struct ConstStaticCell

Source
pub struct ConstStaticCell<T> { /* private fields */ }
Expand description

Statically allocated and initialized, taken at runtime cell.

It has two states: “untaken” and “taken”. It is created “untaken”, and obtaining a reference to the contents permanently changes it to “taken”. This allows that reference to be valid forever.

If your value can be const defined, for example a large, zero filled buffer used for DMA or other scratch memory usage, ConstStaticCell can be used to guarantee the initializer will never take up stack memory.

If your values are all zero initialized, the resulting ConstStaticCell should be placed in .bss, not taking flash space for initialization either.

See the crate-level docs for usage.

Implementations§

Source§

impl<T> ConstStaticCell<T>

Source

pub const fn new(value: T) -> Self

Create a new, empty ConstStaticCell.

It can be taken at runtime with ConstStaticCell::take() or similar methods.

Source

pub fn take(&'static self) -> &'static mut T

Take the ConstStaticCell, returning a mutable reference to it.

§Panics

Panics if this ConstStaticCell was already taken.

Source

pub fn try_take(&'static self) -> Option<&'static mut T>

Try to take the ConstStaticCell, returning None if it was already taken

Trait Implementations§

Auto Trait Implementations§

§

impl<T> !Freeze for ConstStaticCell<T>

§

impl<T> !RefUnwindSafe for ConstStaticCell<T>

§

impl<T> Unpin for ConstStaticCell<T>
where T: Unpin,

§

impl<T> UnwindSafe for ConstStaticCell<T>
where T: UnwindSafe,

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.