VecLike

Trait VecLike 

Source
pub trait VecLike<T>:
    Index<usize, Output = T>
    + IndexMut<usize>
    + Index<Range<usize>, Output = [T]>
    + IndexMut<Range<usize>>
    + Index<RangeFrom<usize>, Output = [T]>
    + IndexMut<RangeFrom<usize>>
    + Index<RangeTo<usize>, Output = [T]>
    + IndexMut<RangeTo<usize>>
    + Index<RangeFull, Output = [T]>
    + IndexMut<RangeFull>
    + DerefMut<Target = [T]>
    + Extend<T> {
    // Required method
    fn push(&mut self, value: T);
}
👎Deprecated: Use Extend and Deref<[T]> instead
Expand description

panic!() in debug builds, optimization hint in release. Common operations implemented by both Vec and SmallVec.

This can be used to write generic code that works with both Vec and SmallVec.

§Example

use smallvec::{VecLike, SmallVec};

fn initialize<V: VecLike<u8>>(v: &mut V) {
    for i in 0..5 {
        v.push(i);
    }
}

let mut vec = Vec::new();
initialize(&mut vec);

let mut small_vec = SmallVec::<[u8; 8]>::new();
initialize(&mut small_vec);

Required Methods§

Source

fn push(&mut self, value: T)

👎Deprecated: Use Extend and Deref<[T]> instead

Append an element to the vector.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<T> VecLike<T> for Vec<T>

Source§

fn push(&mut self, value: T)

👎Deprecated: Use Extend and Deref<[T]> instead

Implementors§

Source§

impl<A: Array + Copy> VecLike<<A as Array>::Item> for SmallVec<A>