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>

source

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

source

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

source

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

source

pub fn pop(&mut self) -> Option<T>

Removes the last element from a vector and returns it, or None if it is empty.

This method is identical to the Vec::pop method in liballoc.

source

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

source

pub fn as_vec(&self) -> &Vec<T>

Obtain a reference to the underlying alloc::vec::Vec

source

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.

source

pub fn retain<F>(&mut self, f: F)
where F: FnMut(&T) -> bool,

Retains only the elements specified by the predicate.

In other words, remove all elements e for which f(&e) returns false. This method operates in place, visiting each element exactly once in the original order, and preserves the order of the retained elements.

This method is identical to the Vec::retain method in liballoc.

source

pub fn retain_mut<F>(&mut self, f: F)
where F: FnMut(&mut T) -> bool,

Retains only the elements specified by the predicate, passing a mutable reference to it.

In other words, remove all elements e such that f(&mut e) returns false. This method operates in place, visiting each element exactly once in the original order, and preserves the order of the retained elements.

This method is identical to the Vec::retain_mut method in liballoc.

source

pub fn as_slice(&self) -> &[T]

Obtain a reference to the current contents

source

pub fn as_slice_mut(&mut self) -> &mut [T]

Obtain a mutable reference to the current contents

source

pub fn clear(&mut self)

Clear the FixedVec

This method is identical to the Vec::clear method in liballoc.

source

pub fn is_full(&self) -> bool

Is the FixedVec full?

source

pub fn is_empty(&self) -> bool

Returns true if this FixedVec is empty (its len is 0).

source

pub fn len(&self) -> usize

Returns the length of the FixedVec.

source

pub fn capacity(&self) -> usize

Returns the total capacity in this FixedVec.

This method is identical to the Vec::capacity method in liballoc.

Trait Implementations§

source§

impl<T> AsMut<[T]> for FixedVec<T>

source§

fn as_mut(&mut self) -> &mut [T]

Converts this type into a mutable reference of the (usually inferred) input type.
source§

impl<T> AsRef<[T]> for FixedVec<T>

source§

fn as_ref(&self) -> &[T]

Converts this type into a shared reference of the (usually inferred) input type.
source§

impl<T: Send> Send for FixedVec<T>

source§

impl<T: Sync> Sync for FixedVec<T>

Auto Trait Implementations§

§

impl<T> Freeze for FixedVec<T>

§

impl<T> RefUnwindSafe for FixedVec<T>
where T: RefUnwindSafe,

§

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

§

impl<T> UnwindSafe for FixedVec<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> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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>,

§

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>,

§

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.
source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more