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