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>
impl<T> ConstStaticCell<T>
Sourcepub const fn new(value: T) -> Self
pub const fn new(value: T) -> Self
Create a new, empty ConstStaticCell
.
It can be taken at runtime with ConstStaticCell::take()
or similar methods.
Sourcepub fn take(&'static self) -> &'static mut T
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.
Sourcepub fn try_take(&'static self) -> Option<&'static mut T>
pub fn try_take(&'static self) -> Option<&'static mut T>
Try to take the ConstStaticCell
, returning None if it was already taken