Struct mnemos_alloc::containers::FixedVec
source · pub struct FixedVec<T> {
inner: Vec<T>,
}
Expand description
A Vec
with a fixed upper size
Semantically, FixedVec works basically the same as alloc::vec::Vec, however FixedVec will NOT ever reallocate to increase size. In practice, this acts like a heap allocated version of heapless’ Vec type.
Fields§
§inner: Vec<T>
Implementations§
source§impl<T> FixedVec<T>
impl<T> FixedVec<T>
sourcepub fn try_new(capacity: usize) -> Option<Self>
pub fn try_new(capacity: usize) -> Option<Self>
Try to allocate a new FixedVec with storage for UP TO capacity
items.
Returns None if the allocation does not succeed immediately.
Panics if the len is zero, or large enough that creating the layout would fail
sourcepub async fn new(capacity: usize) -> Self
pub async fn new(capacity: usize) -> Self
Try to allocate a new FixedVec with storage for UP TO capacity
items.
Will not return until allocation succeeds.
Panics if the len is zero, or large enough that creating the layout would fail
sourcepub fn try_push(&mut self, t: T) -> Result<(), T>
pub fn try_push(&mut self, t: T) -> Result<(), T>
Attempt to push an item into the fixed vec.
Returns an error if the fixed vec is full
sourcepub fn try_extend_from_slice(&mut self, sli: &[T]) -> Result<(), ()>where
T: Clone,
pub fn try_extend_from_slice(&mut self, sli: &[T]) -> Result<(), ()>where T: Clone,
Attempt to push an item into the fixed vec.
Returns an error if the slice would not fit in the capacity. If an error is returned, the contents of the FixedVec is unchanged
sourcepub fn as_vec(&self) -> &Vec<T>
pub fn as_vec(&self) -> &Vec<T>
Obtain a reference to the underlying alloc::vec::Vec
sourcepub unsafe fn as_vec_mut(&mut self) -> &mut Vec<T>
pub unsafe fn as_vec_mut(&mut self) -> &mut Vec<T>
Get inner mutable vec
SAFETY:
You must not do anything that could realloc or increase the capacity. We want an exact upper limit.
This would not be memory unsafe, but would violate the invariants of FixedVec, which is supposed to have a fixed upper size.
sourcepub fn as_slice_mut(&mut self) -> &mut [T]
pub fn as_slice_mut(&mut self) -> &mut [T]
Obtain a mutable reference to the current contents