Trait toad_common::array::Array
source · pub trait Array: Default + GetSize + Reserve + Filled<Self::Item> + Trunc + Deref<Target = [Self::Item]> + DerefMut + Extend<Self::Item> + FromIterator<Self::Item> + IntoIterator<Item = Self::Item> {
type Item;
// Required methods
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 toad
is Extend
ing 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
Default
for creating the collectionExtend
for mutating and adding onto the collection (1 or more elements)Reserve
for reserving space ahead of timeGetSize
for bound checks, empty checks, and accessing the lengthFromIterator
forcollect
ing into the collectionIntoIterator
for iterating and destroying the collectionDeref<Target = [T]>
andDerefMut
for:- indexing (
Index
,IndexMut
) - iterating (
&[T].iter()
and&mut [T].iter_mut()
)
- indexing (
Required Associated Types§
Required Methods§
sourcefn insert_at(&mut self, index: usize, value: <Self as Array>::Item)
fn insert_at(&mut self, index: usize, value: <Self as Array>::Item)
Insert a value at a particular index of a collection.