[][src]Struct index_vec::IndexSlice

#[repr(transparent)]
pub struct IndexSlice<I: Idx, T: ?Sized> {
    pub raw: T,
    // some fields omitted
}

A slice that only accepts indices of a specific type. Note that the intended usage is as IndexSlice<I, [T]>.

This is a thin wrapper around a [T], to the point where the backing is a public property (called raw). This is in part because I know this API is not a complete mirror of Vec's (patches welcome). In the worst case, you can always do what you need to the slice itself.

Some notes on the APIs

  • Most of the Slice APIs are present.

    • Any that aren't can be trivially accessed on the underlying raw field, which is public.
  • Apis that take or return usizes referring to the positions of items were replaced with ones that take Idx.

  • Apis that take R: RangeBounds<usize> take an IdxRangeBounds<I>, which is basically a RangeBounds<I>.

  • Apis that take SliceIndex<usize> take an IdxSliceIndex<I>, which is basically a SliceIndex<I>.

  • Most iterator functions where the_iter().enumerate() would refer to indices have been given _enumerated variants. E.g. IndexSlice::iter_enumerated, etc. This is because v.iter().enumerate() would be (usize, &T), but you want (I, &T).

The following extensions are added:

Fields

raw: T

Methods

impl<I: Idx, T> IndexSlice<I, [T]>[src]

pub fn new<S: AsRef<[T]> + ?Sized>(s: &S) -> &Self[src]

Construct a new IdxSlice by wrapping an existing slice.

pub fn new_mut<S: AsMut<[T]> + ?Sized>(s: &mut S) -> &mut Self[src]

Construct a new mutable IdxSlice by wrapping an existing mutable slice.

pub fn from_slice(s: &[T]) -> &Self[src]

Construct a new IdxSlice by wrapping an existing slice.

pub fn from_slice_mut(s: &mut [T]) -> &mut Self[src]

Construct a new mutable IdxSlice by wrapping an existing mutable slice.

pub fn to_vec(&self) -> IndexVec<I, T> where
    T: Clone
[src]

Copies self into a new IndexVec.

pub fn into_vec(self: Box<Self>) -> IndexVec<I, T>[src]

Converts self into a vector without clones or allocation.

The resulting vector can be converted back into a box via IndexVec<I, T>'s into_boxed_slice method.

pub fn as_raw_slice_mut(&mut self) -> &mut [T][src]

Returns the underlying slice.

pub fn as_raw_slice(&self) -> &[T][src]

Returns the underlying slice.

pub fn as_mut_ptr(&mut self) -> *mut T[src]

Returns an unsafe mutable pointer to the slice's buffer.

pub fn as_ptr(&self) -> *const T[src]

Returns an unsafe pointer to the slice's buffer.

pub fn last_idx(&self) -> I[src]

Return the index of the last element, or panic.

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

Returns the length of our slice.

pub fn len_idx(&self) -> I[src]

Returns the length of our slice as an I.

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

Returns true if we're empty.

pub fn iter(&self) -> Iter<T>[src]

Get a iterator over reverences to our values.

See also IndexSlice::iter_enumerated, which gives you indices (of the correct type) as you iterate.

pub fn iter_mut(&mut self) -> IterMut<T>[src]

Get a iterator over mut reverences to our values.

See also IndexSlice::iter_mut_enumerated, which gives you indices (of the correct type) as you iterate.

pub fn iter_enumerated(
    &self
) -> Map<Enumerate<Iter<T>>, fn(_: (usize, &T)) -> (I, &T)>
[src]

Similar to self.iter().enumerate() but with indices of I and not usize.

pub fn indices(&self) -> Map<Range<usize>, fn(_: usize) -> I>[src]

Get an interator over all our indices.

pub fn iter_mut_enumerated(
    &mut self
) -> Map<Enumerate<IterMut<T>>, fn(_: (usize, &mut T)) -> (I, &mut T)>
[src]

Similar to self.iter_mut().enumerate() but with indices of I and not usize.

pub fn sort(&mut self) where
    T: Ord
[src]

Forwards to the slice's sort implementation.

pub fn sort_by<F: FnMut(&T, &T) -> Ordering>(&mut self, compare: F)[src]

Forwards to the slice's sort_by implementation.

pub fn sort_by_key<F: FnMut(&T) -> K, K: Ord>(&mut self, f: F)[src]

Forwards to the slice's sort_by_key implementation.

pub fn sort_by_cached_key<F: FnMut(&T) -> K, K: Ord>(&mut self, f: F)[src]

Forwards to the slice's sort_by_cached_key implementation.

pub fn sort_unstable(&mut self) where
    T: Ord
[src]

Forwards to the slice's sort_unstable implementation.

pub fn sort_unstable_by<F: FnMut(&T, &T) -> Ordering>(&mut self, compare: F)[src]

Forwards to the slice's sort_unstable_by implementation.

pub fn sort_unstable_by_key<F: FnMut(&T) -> K, K: Ord>(&mut self, f: F)[src]

Forwards to the slice's sort_unstable_by_key implementation.

pub fn ends_with<S: AsRef<[T]> + ?Sized>(&self, needle: &S) -> bool where
    T: PartialEq
[src]

Forwards to the slice's ends_with implementation.

pub fn starts_with<S: AsRef<[T]> + ?Sized>(&self, needle: &S) -> bool where
    T: PartialEq
[src]

Forwards to the slice's starts_with implementation.

pub fn contains(&self, x: &T) -> bool where
    T: PartialEq
[src]

Forwards to the slice's contains implementation.

pub fn reverse(&mut self)[src]

Forwards to the slice's reverse implementation.

Call slice::binary_search converting the indices it gives us back as needed.

pub fn binary_search_by<'a, F: FnMut(&'a T) -> Ordering>(
    &'a self,
    f: F
) -> Result<I, I>
[src]

Binary searches this sorted vec with a comparator function, converting the indices it gives us back to our Idx type.

pub fn copy_from_slice(&mut self, src: &Self) where
    T: Copy
[src]

Copies all elements from src into self, using a memcpy.

pub fn clone_from_slice(&mut self, src: &Self) where
    T: Clone
[src]

Copies the elements from src into self.

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

Swaps all elements in self with those in other.

pub fn binary_search_by_key<'a, B: Ord, F: FnMut(&'a T) -> B>(
    &'a self,
    b: &B,
    f: F
) -> Result<I, I>
[src]

Binary searches this sorted vec with a key extraction function, converting the indices it gives us back to our Idx type.

pub fn position<F: FnMut(&T) -> bool>(&self, f: F) -> Option<I>[src]

Searches for an element in an iterator, returning its index. This is equivalent to Iterator::position, but returns I and not usize.

pub fn rposition<F: FnMut(&T) -> bool>(&self, f: F) -> Option<I>[src]

Searches for an element in an iterator from the right, returning its index. This is equivalent to Iterator::position, but returns I and not usize.

pub fn swap(&mut self, a: I, b: I)[src]

Swaps two elements in our vector.

pub fn split_at(&self, a: I) -> (&Self, &Self)[src]

Divides our slice into two at an index.

pub fn split_at_mut(&mut self, a: I) -> (&mut Self, &mut Self)[src]

Divides our slice into two at an index.

pub fn rotate_left(&mut self, mid: I)[src]

Rotates our data in-place such that the first mid elements of the slice move to the end while the last self.len() - mid elements move to the front

pub fn rotate_right(&mut self, k: I)[src]

Rotates our data in-place such that the first self.len() - k elements of the slice move to the end while the last k elements move to the front

pub fn last(&self) -> Option<&T>[src]

Return the the last element, if we are not empty.

pub fn last_mut(&mut self) -> Option<&mut T>[src]

Return the the last element, if we are not empty.

pub fn first(&self) -> Option<&T>[src]

Return the the first element, if we are not empty.

pub fn first_mut(&mut self) -> Option<&mut T>[src]

Return the the first element, if we are not empty.

pub fn copy_within<R: IdxRangeBounds<I>>(&mut self, src: R, dst: I) where
    T: Copy
[src]

Copies elements from one part of the slice to another part of itself, using a memmove.

pub fn get<J: IdxSliceIndex<I, T>>(&self, index: J) -> Option<&J::Output>[src]

Get a ref to the item at the provided index, or None for out of bounds.

pub fn get_mut<J: IdxSliceIndex<I, T>>(
    &mut self,
    index: J
) -> Option<&mut J::Output>
[src]

Get a mut ref to the item at the provided index, or None for out of bounds

pub fn windows(
    &self,
    size: usize
) -> Map<Windows<T>, fn(_: &[T]) -> &IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's windows iterator with one that yields IndexSlices with the correct index type.

pub fn chunks(
    &self,
    size: usize
) -> Map<Chunks<T>, fn(_: &[T]) -> &IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's chunks iterator with one that yields IndexSlices with the correct index type.

pub fn chunks_mut(
    &mut self,
    size: usize
) -> Map<ChunksMut<T>, fn(_: &mut [T]) -> &mut IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's chunks_mut iterator with one that yields IndexSlices with the correct index type.

pub fn chunks_exact(
    &self,
    chunk_size: usize
) -> Map<ChunksExact<T>, fn(_: &[T]) -> &IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's chunks_exact iterator with one that yields IndexSlices with the correct index type.

pub fn chunks_exact_mut(
    &mut self,
    chunk_size: usize
) -> Map<ChunksExactMut<T>, fn(_: &mut [T]) -> &mut IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's chunks_exact_mut iterator with one that yields IndexSlices with the correct index type.

pub fn rchunks(
    &self,
    size: usize
) -> Map<RChunks<T>, fn(_: &[T]) -> &IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's rchunks iterator with one that yields IndexSlices with the correct index type.

pub fn rchunks_mut(
    &mut self,
    size: usize
) -> Map<RChunksMut<T>, fn(_: &mut [T]) -> &mut IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's rchunks_mut iterator with one that yields IndexSlices with the correct index type.

pub fn rchunks_exact(
    &self,
    chunk_size: usize
) -> Map<RChunksExact<T>, fn(_: &[T]) -> &IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's rchunks_exact iterator with one that yields IndexSlices with the correct index type.

pub fn rchunks_exact_mut(
    &mut self,
    chunk_size: usize
) -> Map<RChunksExactMut<T>, fn(_: &mut [T]) -> &mut IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's rchunks_exact_mut iterator with one that yields IndexSlices with the correct index type.

pub fn split<F: FnMut(&T) -> bool>(
    &self,
    f: F
) -> Map<Split<T, F>, fn(_: &[T]) -> &IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's split iterator with one that yields IndexSlices with the correct index type.

pub fn split_mut<F: FnMut(&T) -> bool>(
    &mut self,
    f: F
) -> Map<SplitMut<T, F>, fn(_: &mut [T]) -> &mut IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's split_mut iterator with one that yields IndexSlices with the correct index type.

pub fn rsplit<F: FnMut(&T) -> bool>(
    &self,
    f: F
) -> Map<RSplit<T, F>, fn(_: &[T]) -> &IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's rsplit iterator with one that yields IndexSlices with the correct index type.

pub fn rsplit_mut<F: FnMut(&T) -> bool>(
    &mut self,
    f: F
) -> Map<RSplitMut<T, F>, fn(_: &mut [T]) -> &mut IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's rsplit_mut iterator with one that yields IndexSlices with the correct index type.

pub fn splitn<F: FnMut(&T) -> bool>(
    &self,
    n: usize,
    f: F
) -> Map<SplitN<T, F>, fn(_: &[T]) -> &IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's splitn iterator with one that yields IndexSlices with the correct index type.

pub fn splitn_mut<F: FnMut(&T) -> bool>(
    &mut self,
    n: usize,
    f: F
) -> Map<SplitNMut<T, F>, fn(_: &mut [T]) -> &mut IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's splitn_mut iterator with one that yields IndexSlices with the correct index type.

pub fn rsplitn<F: FnMut(&T) -> bool>(
    &self,
    n: usize,
    f: F
) -> Map<RSplitN<T, F>, fn(_: &[T]) -> &IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's rsplitn iterator with one that yields IndexSlices with the correct index type.

pub fn rsplitn_mut<F: FnMut(&T) -> bool>(
    &mut self,
    n: usize,
    f: F
) -> Map<RSplitNMut<T, F>, fn(_: &mut [T]) -> &mut IndexSlice<I, [T]>>
[src]

Wraps the underlying slice's rsplitn_mut iterator with one that yields IndexSlices with the correct index type.

pub unsafe fn from_raw_parts<'a>(data: *const T, len: usize) -> &'a Self[src]

Create a IdxSlice from its pointer and length.

pub unsafe fn from_raw_parts_mut<'a>(data: *mut T, len: usize) -> &'a mut Self[src]

Create a mutable IdxSlice from its pointer and length.

pub fn split_first(&self) -> Option<(&T, &IndexSlice<I, [T]>)>[src]

Returns the first and all the rest of the elements of the slice, or None if it is empty.

pub fn split_first_mut(&mut self) -> Option<(&mut T, &mut IndexSlice<I, [T]>)>[src]

Returns the first and all the rest of the elements of the slice, or None if it is empty.

pub fn split_last(&self) -> Option<(&T, &IndexSlice<I, [T]>)>[src]

Returns the last and all the rest of the elements of the slice, or None if it is empty.

pub fn split_last_mut(&mut self) -> Option<(&mut T, &mut IndexSlice<I, [T]>)>[src]

Returns the last and all the rest of the elements of the slice, or None if it is empty.

Trait Implementations

impl<'a, I: Idx, T> From<&'a [T]> for &'a IndexSlice<I, [T]>[src]

impl<'a, I: Idx, T> From<&'a mut [T]> for &'a mut IndexSlice<I, [T]>[src]

impl<'a, I: Idx, T: Clone> From<&'a IndexSlice<I, [T]>> for IndexVec<I, T>[src]

impl<'a, I: Idx, T: Clone> From<&'a mut IndexSlice<I, [T]>> for IndexVec<I, T>[src]

impl<I: Idx, A, B> PartialEq<IndexSlice<I, [B]>> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<I: Idx, A, B> PartialEq<[B]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx, J: Idx> PartialEq<&'b IndexSlice<J, [B]>> for IndexVec<I, A> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx, J: Idx> PartialEq<&'b mut IndexSlice<J, [B]>> for IndexVec<I, A> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<Vec<B>> for &'a IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<Vec<B>> for &'a mut IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b mut [B]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx, J: Idx> PartialEq<IndexVec<J, B>> for &'a IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx, J: Idx> PartialEq<IndexVec<J, B>> for &'a mut IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx, J: Idx> PartialEq<&'a IndexSlice<J, [B]>> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx, J: Idx> PartialEq<&'a mut IndexSlice<J, [B]>> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 0]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 0]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 1]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 1]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 2]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 2]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 3]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 3]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 4]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 4]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 5]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 5]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 6]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 6]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 7]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 7]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 8]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 8]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 9]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 9]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 10]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 10]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 11]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 11]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 12]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 12]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 13]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 13]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 14]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 14]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 15]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 15]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 16]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 16]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 17]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 17]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 18]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 18]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 19]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 19]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 20]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 20]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 21]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 21]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 22]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 22]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 23]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 23]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 24]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 24]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 25]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 25]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 26]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 26]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 27]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 27]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 28]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 28]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 29]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 29]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 30]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 30]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 31]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 31]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<[B; 32]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<'a, 'b, A, B, I: Idx> PartialEq<&'b [B; 32]> for IndexSlice<I, [A]> where
    A: PartialEq<B>, 
[src]

impl<I: Idx, A: Eq> Eq for IndexSlice<I, [A]>[src]

impl<I: Idx, T: Ord> Ord for IndexSlice<I, [T]>[src]

impl<I: Idx, T: PartialOrd> PartialOrd<IndexSlice<I, [T]>> for IndexSlice<I, [T]>[src]

impl<I: Idx, T: Hash> Hash for IndexSlice<I, [T]>[src]

impl<I, R, T> Index<R> for IndexSlice<I, [T]> where
    I: Idx,
    R: IdxSliceIndex<I, T>, 
[src]

type Output = R::Output

The returned type after indexing.

impl<I, R, T> IndexMut<R> for IndexSlice<I, [T]> where
    I: Idx,
    R: IdxSliceIndex<I, T>, 
[src]

impl<I: Idx, T: Debug + ?Sized> Debug for IndexSlice<I, T>[src]

impl<I: Idx, A> AsRef<[A]> for IndexSlice<I, [A]>[src]

impl<I: Idx, A> AsRef<IndexSlice<I, [A]>> for IndexVec<I, A>[src]

impl<I: Idx, A> AsMut<[A]> for IndexSlice<I, [A]>[src]

impl<I: Idx, A> AsMut<IndexSlice<I, [A]>> for IndexVec<I, A>[src]

impl<I: Idx, T> Send for IndexSlice<I, [T]> where
    T: Send
[src]

impl<I: Copy + Idx, T: Copy + ?Sized> Copy for IndexSlice<I, T>[src]

impl<'a, I: Idx, T> IntoIterator for &'a IndexSlice<I, [T]>[src]

type Item = &'a T

The type of the elements being iterated over.

type IntoIter = Iter<'a, T>

Which kind of iterator are we turning this into?

impl<'a, I: Idx, T> IntoIterator for &'a mut IndexSlice<I, [T]>[src]

type Item = &'a mut T

The type of the elements being iterated over.

type IntoIter = IterMut<'a, T>

Which kind of iterator are we turning this into?

impl<I: Clone + Idx, T: Clone + ?Sized> Clone for IndexSlice<I, T>[src]

impl<'_, I: Idx, T> Default for &'_ IndexSlice<I, [T]>[src]

impl<'_, I: Idx, T> Default for &'_ mut IndexSlice<I, [T]>[src]

impl<I: Idx, T> Borrow<IndexSlice<I, [T]>> for IndexVec<I, T>[src]

impl<I: Idx, T> BorrowMut<IndexSlice<I, [T]>> for IndexVec<I, T>[src]

impl<I: Idx, T> ToOwned for IndexSlice<I, [T]> where
    T: Clone
[src]

type Owned = IndexVec<I, T>

The resulting type after obtaining ownership.

Auto Trait Implementations

impl<I, T: ?Sized> Unpin for IndexSlice<I, T> where
    T: Unpin

impl<I, T: ?Sized> Send for IndexSlice<I, T> where
    T: Send

impl<I, T: ?Sized> Sync for IndexSlice<I, T> where
    T: Sync

Blanket Implementations

impl<T> From<T> for T[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> Into<U> for T where
    U: From<T>, 
[src]

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.

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

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

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

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

type Owned = T

The resulting type after obtaining ownership.