[−][src]Struct smallvec::SmallVec
A Vec
-like container that can store a small number of elements inline.
SmallVec
acts like a vector, but can store a limited amount of data inline within the
Smallvec
struct rather than in a separate allocation. If the data exceeds this limit, the
SmallVec
will "spill" its data onto the heap, allocating a new buffer to hold it.
The amount of data that a SmallVec
can store inline depends on its backing store. The backing
store can be any type that implements the Array
trait; usually it is a small fixed-sized
array. For example a SmallVec<[u64; 8]>
can hold up to eight 64-bit integers inline.
Example
use smallvec::SmallVec; let mut v = SmallVec::<[u8; 4]>::new(); // initialize an empty vector // The vector can hold up to 4 items without spilling onto the heap. v.extend(0..4); assert_eq!(v.len(), 4); assert!(!v.spilled()); // Pushing another element will force the buffer to spill: v.push(4); assert_eq!(v.len(), 5); assert!(v.spilled());
Methods
impl<A: Array> SmallVec<A>
[src][−]
ⓘImportant traits for SmallVec<A>pub fn new() -> SmallVec<A>
[src][+]
ⓘImportant traits for SmallVec<A>
pub fn with_capacity(n: usize) -> Self
[src][+]
ⓘImportant traits for SmallVec<A>pub fn from_vec(vec: Vec<A::Item>) -> SmallVec<A>
[src][+]
ⓘImportant traits for SmallVec<A>
ⓘImportant traits for SmallVec<A>pub fn from_buf(buf: A) -> SmallVec<A>
[src][+]
ⓘImportant traits for SmallVec<A>
ⓘImportant traits for SmallVec<A>pub fn from_buf_and_len(buf: A, len: usize) -> SmallVec<A>
[src][+]
ⓘImportant traits for SmallVec<A>
ⓘImportant traits for SmallVec<A>pub unsafe fn from_buf_and_len_unchecked(buf: A, len: usize) -> SmallVec<A>
[src][+]
ⓘImportant traits for SmallVec<A>
pub unsafe fn set_len(&mut self, new_len: usize)
[src][+]
pub fn inline_size(&self) -> usize
[src][+]
pub fn len(&self) -> usize
[src][+]
pub fn is_empty(&self) -> bool
[src][+]
pub fn capacity(&self) -> usize
[src][+]
pub fn spilled(&self) -> bool
[src][+]
ⓘImportant traits for Drain<'a, T>pub fn drain(&mut self) -> Drain<A::Item>
[src][+]
ⓘImportant traits for Drain<'a, T>
pub fn push(&mut self, value: A::Item)
[src][+]
pub fn pop(&mut self) -> Option<A::Item>
[src][+]
pub fn grow(&mut self, new_cap: usize)
[src][+]
pub fn reserve(&mut self, additional: usize)
[src][+]
pub fn reserve_exact(&mut self, additional: usize)
[src][+]
pub fn shrink_to_fit(&mut self)
[src][+]
pub fn truncate(&mut self, len: usize)
[src][+]
pub fn as_slice(&self) -> &[A::Item]
[src][+]
pub fn as_mut_slice(&mut self) -> &mut [A::Item]
[src][+]
pub fn swap_remove(&mut self, index: usize) -> A::Item
[src][+]
pub fn clear(&mut self)
[src][+]
pub fn remove(&mut self, index: usize) -> A::Item
[src][+]
pub fn insert(&mut self, index: usize, element: A::Item)
[src][+]
pub fn insert_many<I: IntoIterator<Item = A::Item>>(
&mut self,
index: usize,
iterable: I
)
[src][+]
&mut self,
index: usize,
iterable: I
)
pub fn into_vec(self) -> Vec<A::Item>
[src][+]
pub fn into_inner(self) -> Result<A, Self>
[src][+]
pub fn retain<F: FnMut(&mut A::Item) -> bool>(&mut self, f: F)
[src][+]
pub fn dedup(&mut self) where
A::Item: PartialEq<A::Item>,
[src][+]
A::Item: PartialEq<A::Item>,
pub fn dedup_by<F>(&mut self, same_bucket: F) where
F: FnMut(&mut A::Item, &mut A::Item) -> bool,
[src][+]
F: FnMut(&mut A::Item, &mut A::Item) -> bool,
pub fn dedup_by_key<F, K>(&mut self, key: F) where
F: FnMut(&mut A::Item) -> K,
K: PartialEq<K>,
[src][+]
F: FnMut(&mut A::Item) -> K,
K: PartialEq<K>,
ⓘImportant traits for SmallVec<A>pub unsafe fn from_raw_parts(
ptr: *mut A::Item,
length: usize,
capacity: usize
) -> SmallVec<A>
[src][+]
ⓘImportant traits for SmallVec<A>
ptr: *mut A::Item,
length: usize,
capacity: usize
) -> SmallVec<A>
impl<A: Array> SmallVec<A> where
A::Item: Copy,
[src][−]
A::Item: Copy,
pub fn from_slice(slice: &[A::Item]) -> Self
[src][+]
pub fn insert_from_slice(&mut self, index: usize, slice: &[A::Item])
[src][+]
pub fn extend_from_slice(&mut self, slice: &[A::Item])
[src][+]
impl<A: Array> SmallVec<A> where
A::Item: Clone,
[src][−]
A::Item: Clone,
pub fn resize(&mut self, len: usize, value: A::Item)
[src][+]
pub fn from_elem(elem: A::Item, n: usize) -> Self
[src][+]
Trait Implementations
impl<A: Array> VecLike<<A as Array>::Item> for SmallVec<A>
[src][+]
impl<A: Array> ExtendFromSlice<<A as Array>::Item> for SmallVec<A> where
A::Item: Copy,
[src][+]
A::Item: Copy,
impl<A: Array, B: Array> PartialEq<SmallVec<B>> for SmallVec<A> where
A::Item: PartialEq<B::Item>,
[src][+]
A::Item: PartialEq<B::Item>,
impl<A: Array> Clone for SmallVec<A> where
A::Item: Clone,
[src][+]
A::Item: Clone,
impl<A: Array> Ord for SmallVec<A> where
A::Item: Ord,
[src][+]
A::Item: Ord,
impl<'a, A: Array> From<&'a [<A as Array>::Item]> for SmallVec<A> where
A::Item: Clone,
[src][+]
A::Item: Clone,
impl<A: Array> From<Vec<<A as Array>::Item>> for SmallVec<A>
[src][+]
impl<A: Array> From<A> for SmallVec<A>
[src][+]
impl<A: Array> IntoIterator for SmallVec<A>
[src][+]
impl<'a, A: Array> IntoIterator for &'a SmallVec<A>
[src][+]
impl<'a, A: Array> IntoIterator for &'a mut SmallVec<A>
[src][+]
impl<A: Array> Eq for SmallVec<A> where
A::Item: Eq,
[src]
A::Item: Eq,
impl<A: Array> Send for SmallVec<A> where
A::Item: Send,
[src]
A::Item: Send,
impl<A: Array> Extend<<A as Array>::Item> for SmallVec<A>
[src][+]
impl<A: Array> Drop for SmallVec<A>
[src][+]
impl<A: Array> PartialOrd<SmallVec<A>> for SmallVec<A> where
A::Item: PartialOrd,
[src][+]
A::Item: PartialOrd,
impl<A: Array> AsMut<[<A as Array>::Item]> for SmallVec<A>
[src][+]
impl<A: Array> AsRef<[<A as Array>::Item]> for SmallVec<A>
[src][+]
impl<A: Array> Default for SmallVec<A>
[src][+]
impl<A: Array> DerefMut for SmallVec<A>
[src][+]
impl<A: Array> Debug for SmallVec<A> where
A::Item: Debug,
[src][+]
A::Item: Debug,
impl<A: Array> Hash for SmallVec<A> where
A::Item: Hash,
[src][+]
A::Item: Hash,
impl<A: Array> Deref for SmallVec<A>
[src][+]
impl<A: Array> Index<usize> for SmallVec<A>
[src][+]
impl<A: Array> Index<Range<usize>> for SmallVec<A>
[src][+]
impl<A: Array> Index<RangeFrom<usize>> for SmallVec<A>
[src][+]
impl<A: Array> Index<RangeTo<usize>> for SmallVec<A>
[src][+]
impl<A: Array> Index<RangeFull> for SmallVec<A>
[src][+]
impl<A: Array> IndexMut<usize> for SmallVec<A>
[src][+]
impl<A: Array> IndexMut<Range<usize>> for SmallVec<A>
[src][+]
impl<A: Array> IndexMut<RangeFrom<usize>> for SmallVec<A>
[src][+]
impl<A: Array> IndexMut<RangeTo<usize>> for SmallVec<A>
[src][+]
impl<A: Array> IndexMut<RangeFull> for SmallVec<A>
[src][+]
impl<A: Array> FromIterator<<A as Array>::Item> for SmallVec<A>
[src][+]
impl<A: Array> Borrow<[<A as Array>::Item]> for SmallVec<A>
[src][+]
impl<A: Array<Item = u8>> Write for SmallVec<A>
[src][+]
impl<A: Array> BorrowMut<[<A as Array>::Item]> for SmallVec<A>
[src][+]
Auto Trait Implementations
Blanket Implementations
impl<T> From for T
[src][+]
impl<I> IntoIterator for I where
I: Iterator,
[src][+]
I: Iterator,
impl<T, U> Into for T where
U: From<T>,
[src][+]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src][+]
T: Clone,
impl<T, U> TryFrom for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T> Borrow for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src][+]
T: 'static + ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T, U> TryInto for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,