Struct ConstStaticCell
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§
§impl<T> ConstStaticCell<T>
impl<T> ConstStaticCell<T>
pub const fn new(value: T) -> ConstStaticCell<T>
Available on crate feature threading
only.
pub const fn new(value: T) -> ConstStaticCell<T>
threading
only.Create a new, empty ConstStaticCell
.
It can be taken at runtime with ConstStaticCell::take()
or similar methods.
pub fn take(&'static self) -> &'static mut T
Available on crate feature threading
only.
pub fn take(&'static self) -> &'static mut T
threading
only.Take the ConstStaticCell
, returning a mutable reference to it.
§Panics
Panics if this ConstStaticCell
was already taken.
pub fn try_take(&'static self) -> Option<&'static mut T>
Available on crate feature threading
only.
pub fn try_take(&'static self) -> Option<&'static mut T>
threading
only.Try to take the ConstStaticCell
, returning None if it was already taken