Trait toad_array::Array
source · pub trait Array: Default + Len + 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 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- [
GetSize] for bound checks, empty checks, and accessing the length FromIteratorforcollecting 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§
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.