[][src]Struct tinyvec::ArrayishVec

#[repr(C)]
pub struct ArrayishVec<A: Arrayish> { /* fields omitted */ }

Methods

impl<A: Arrayish> ArrayishVec<A>[src]

pub fn append(&mut self, other: &mut Self)[src]

#[must_use] pub fn as_mut_ptr(&mut self) -> *mut A::Item[src]

#[must_use] pub fn as_mut_slice(&mut self) -> &mut [A::Item][src]

#[must_use] pub fn as_ptr(&self) -> *const A::Item[src]

#[must_use] pub fn as_slice(&self) -> &[A::Item][src]

#[must_use] pub fn capacity(&self) -> usize[src]

pub fn clear(&mut self)[src]

pub fn dedup(&mut self) where
    A::Item: PartialEq
[src]

pub fn dedup_by<F>(&mut self, same_bucket: F) where
    F: FnMut(&mut A::Item, &mut A::Item) -> bool, 
[src]

pub fn dedup_by_key<F, K>(&mut self, key: F) where
    F: FnMut(&mut A::Item) -> K,
    K: PartialEq
[src]

Important traits for ArrayishVecDrain<'p, A>
pub fn drain<R: RangeBounds<usize>>(&mut self, range: R) -> ArrayishVecDrain<A>[src]

Creates a draining iterator that removes the specified range in the vector and yields the removed items.

Panics

  • If the start is greater than the end
  • If the end is past the edge of the vec.

Example

use tinyvec::*;
let mut av = arr_vec!([i32; 4], 1, 2, 3);
let av2: ArrayishVec<[i32; 4]> = av.drain(1..).collect();
assert_eq!(av.as_slice(), &[1][..]);
assert_eq!(av2.as_slice(), &[2, 3][..]);

av.drain(..);
assert_eq!(av.as_slice(), &[]);

pub fn extend_from_slice(&mut self, sli: &[A::Item]) where
    A::Item: Clone
[src]

#[must_use] pub fn from_array_len(data: A, len: usize) -> Self[src]

Wraps up an array and uses the given length as the initial length.

Note that the From impl for arrays assumes the full length is used.

Panics

The length must be less than or equal to the capacity of the array.

pub fn insert(&mut self, index: usize, item: A::Item)[src]

Inserts an item at the position given, moving all following elements +1 index.

Panics

  • If index > len

Example

use tinyvec::*;
let mut av = arr_vec!([i32; 10], 1, 2, 3);
av.insert(1, 4);
assert_eq!(av.as_slice(), &[1, 4, 2, 3]);
av.insert(4, 5);
assert_eq!(av.as_slice(), &[1, 4, 2, 3, 5]);

#[must_use] pub fn is_empty(&self) -> bool[src]

#[must_use] pub fn len(&self) -> usize[src]

#[must_use] pub fn new() -> Self where
    A: Default
[src]

pub fn pop(&mut self) -> Option<A::Item>[src]

pub fn push(&mut self, val: A::Item)[src]

pub fn remove(&mut self, index: usize) -> A::Item[src]

Removes the item at index, shifting all others down by one index.

Returns the removed element.

Panics

If the index is out of bounds.

Example

use tinyvec::*;
let mut av = arr_vec!([i32; 4], 1, 2, 3);
assert_eq!(av.remove(1), 2);
assert_eq!(av.as_slice(), &[1, 3][..]);

pub fn resize(&mut self, new_len: usize, new_val: A::Item) where
    A::Item: Clone
[src]

Resize the vec to the new length.

If it needs to be longer, it's filled with clones of the provided value. If it needs to be shorter, it's truncated.

Example

use tinyvec::*;

let mut av = arr_vec!([&str; 10], "hello");
av.resize(3, "world");
assert_eq!(av.as_slice(), &["hello", "world", "world"][..]);

let mut av = arr_vec!([i32; 10], 1, 2, 3, 4);
av.resize(2, 0);
assert_eq!(av.as_slice(), &[1, 2][..]);

pub fn resize_default(&mut self, new_len: usize)[src]

Resize the vec to the new size.

If it needs to be longer the length is simply increased (in constant time), if it needs to be shorter then it's truncated.

Example

use tinyvec::*;

let mut av = arr_vec!([i32; 10], 1, 2, 3);
av.resize_default(5);
assert_eq!(av.as_slice(), &[1, 2, 3, 0, 0][..]);

let mut av = arr_vec!([i32; 10], 1, 2, 3, 4);
av.resize_default(2);
assert_eq!(av.as_slice(), &[1, 2][..]);

pub fn resize_with<F: FnMut() -> A::Item>(&mut self, new_len: usize, f: F)[src]

Resize the vec to the new length.

If it needs to be longer, it's filled with repeated calls to the provided function. If it needs to be shorter, it's truncated.

Example

use tinyvec::*;

let mut av = arr_vec!([i32; 10], 1, 2, 3);
av.resize_with(5, Default::default);
assert_eq!(av.as_slice(), &[1, 2, 3, 0, 0][..]);

let mut av = arr_vec!([i32; 10]);
let mut p = 1;
av.resize_with(4, || {
  p *= 2;
  p
});
assert_eq!(av.as_slice(), &[2, 4, 8, 16][..]);

pub fn retain<F: FnMut(&A::Item) -> bool>(&mut self, acceptable: F)[src]

Walk the vec and keep only the elements that pass the predicate given.

Example

use tinyvec::*;

let mut av = arr_vec!([i32; 10], 1, 2, 3, 4);
av.retain(|&x| x % 2 == 0);
assert_eq!(av.as_slice(), &[2, 4][..]);

pub fn split_off(&mut self, at: usize) -> Self where
    Self: Default
[src]

Splits the collection at the point given.

  • [0, at) stays in this vec
  • [at, len) ends up in the new vec.

Panics

  • if at > len

Example

use tinyvec::*;
let mut av = arr_vec!([i32; 4], 1, 2, 3);
let av2 = av.split_off(1);
assert_eq!(av.as_slice(), &[1][..]);
assert_eq!(av2.as_slice(), &[2, 3][..]);

pub fn swap_remove(&mut self, index: usize) -> A::Item[src]

Remove an element, swapping the end of the vec into its place.

Panics

  • If the index is out of bounds.

Example

use tinyvec::*;
let mut av = arr_vec!([&str; 4], "foo", "bar", "quack", "zap");

assert_eq!(av.swap_remove(1), "bar");
assert_eq!(av.as_slice(), &["foo", "zap", "quack"][..]);

assert_eq!(av.swap_remove(0), "foo");
assert_eq!(av.as_slice(), &["quack", "zap"][..]);

pub fn truncate(&mut self, new_len: usize)[src]

pub fn try_from_array_len(data: A, len: usize) -> Result<Self, A>[src]

Wraps an array, using the given length as the starting length.

If you want to use the whole length of the array, you can just use the From impl.

Failure

If the given length is greater than the capacity of the array this will error, and you'll get the array back in the Err.

pub fn try_push(&mut self, val: A::Item) -> Result<(), A::Item>[src]

Pushes an item if there's room.

Failure

If there's no more capacity the vec is unchanged, and you get the item back in the Err.

Trait Implementations

impl<A: Arrayish> AsMut<[<A as Arrayish>::Item]> for ArrayishVec<A>[src]

impl<A: Arrayish> AsRef<[<A as Arrayish>::Item]> for ArrayishVec<A>[src]

impl<A: Arrayish> Binary for ArrayishVec<A> where
    A::Item: Binary
[src]

impl<A: Arrayish> Borrow<[<A as Arrayish>::Item]> for ArrayishVec<A>[src]

impl<A: Arrayish> BorrowMut<[<A as Arrayish>::Item]> for ArrayishVec<A>[src]

impl<A: Clone + Arrayish> Clone for ArrayishVec<A>[src]

impl<A: Copy + Arrayish> Copy for ArrayishVec<A>[src]

impl<A: Arrayish> Debug for ArrayishVec<A> where
    A::Item: Debug
[src]

impl<A: Default + Arrayish> Default for ArrayishVec<A>[src]

impl<A: Arrayish> Deref for ArrayishVec<A>[src]

type Target = [A::Item]

The resulting type after dereferencing.

impl<A: Arrayish> DerefMut for ArrayishVec<A>[src]

impl<A: Arrayish> Display for ArrayishVec<A> where
    A::Item: Display
[src]

impl<A: Arrayish> Eq for ArrayishVec<A> where
    A::Item: Eq
[src]

impl<A: Arrayish> Extend<<A as Arrayish>::Item> for ArrayishVec<A>[src]

impl<A: Arrayish> From<A> for ArrayishVec<A>[src]

#[must_use] fn from(data: A) -> Self[src]

The output has a length equal to the full array.

If you want to select a length, use [from_array_len]

impl<A: Arrayish + Default> FromIterator<<A as Arrayish>::Item> for ArrayishVec<A>[src]

impl<A: Arrayish, I: SliceIndex<[A::Item]>> Index<I> for ArrayishVec<A>[src]

type Output = <I as SliceIndex<[A::Item]>>::Output

The returned type after indexing.

impl<A: Arrayish, I: SliceIndex<[A::Item]>> IndexMut<I> for ArrayishVec<A>[src]

impl<A: Arrayish> IntoIterator for ArrayishVec<A>[src]

type Item = A::Item

The type of the elements being iterated over.

type IntoIter = ArrayishVecIterator<A>

Which kind of iterator are we turning this into?

impl<A: Arrayish> LowerExp for ArrayishVec<A> where
    A::Item: LowerExp
[src]

impl<A: Arrayish> LowerHex for ArrayishVec<A> where
    A::Item: LowerHex
[src]

impl<A: Arrayish> Octal for ArrayishVec<A> where
    A::Item: Octal
[src]

impl<A: Arrayish> Ord for ArrayishVec<A> where
    A::Item: Ord
[src]

impl<'_, A: Arrayish> PartialEq<&'_ [<A as Arrayish>::Item]> for ArrayishVec<A> where
    A::Item: PartialEq
[src]

impl<'_, A: Arrayish> PartialEq<&'_ A> for ArrayishVec<A> where
    A::Item: PartialEq
[src]

impl<A: Arrayish> PartialEq<ArrayishVec<A>> for ArrayishVec<A> where
    A::Item: PartialEq
[src]

impl<A: Arrayish> PartialOrd<ArrayishVec<A>> for ArrayishVec<A> where
    A::Item: PartialOrd
[src]

impl<A: Arrayish> Pointer for ArrayishVec<A> where
    A::Item: Pointer
[src]

impl<A: Arrayish> UpperExp for ArrayishVec<A> where
    A::Item: UpperExp
[src]

impl<A: Arrayish> UpperHex for ArrayishVec<A> where
    A::Item: UpperHex
[src]

Auto Trait Implementations

impl<A> Send for ArrayishVec<A> where
    A: Send

impl<A> Sync for ArrayishVec<A> where
    A: Sync

impl<A> Unpin for ArrayishVec<A> where
    A: Unpin

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<!> for T[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.