Trait kwap_common::Array
source · [−]pub trait Array: Default + GetSize + Reserve + Deref<Target = [Self::Item]> + DerefMut + Extend<Self::Item> + FromIterator<Self::Item> + IntoIterator<Item = Self::Item> {
type Item;
fn insert_at(&mut self, index: usize, value: <Self as Array>::Item);
fn remove(&mut self, index: usize) -> Option<<Self as Array>::Item>;
fn push(&mut self, value: <Self as Array>::Item);
}Expand description
An ordered indexable collection of some type Item
Provided implementations
Notably, not heapless::ArrayVec or arrayvec::ArrayVec. An important usecase within kwap
is Extending the collection, and the performance of heapless and arrayvec’s Extend implementations
are notably worse than tinyvec.
tinyvec also has the added bonus of being 100% unsafe-code-free, meaning if you choose tinyvec you eliminate the
possibility of memory defects and UB.
Requirements
Defaultfor creating the collectionExtendfor mutating and adding onto the collection (1 or more elements)Reservefor reserving space ahead of time- [
Insert] for pushing and inserting elements into the collection GetSizefor bound checks, empty checks, and accessing the lengthFromIteratorforcollecting into the collectionIntoIteratorfor iterating and destroying the collectionDeref<Target = [T]>andDerefMutfor:- indexing (
Index,IndexMut) - iterating (
&[T].iter()and&mut [T].iter_mut())
- indexing (
Required Associated Types
Required Methods
Insert a value at a particular index of a collection.
Try to remove an entry from the collection.
Returns Some(Self::Item) if index was in-bounds, None if index is out of bounds.