ViewIterator

Trait ViewIterator 

Source
pub trait ViewIterator<'a> {
    type Item;
    type Iter: Iterator<Item = Self::Item>;

    // Required method
    fn view_iter(&'a self) -> Self::Iter;
}
Expand description

A convenience trait to allow generic implementations to call an iterator over the view. This is necessary because the View trait has an explicit lifetime parameter, which makes it difficult or impossible to use in generic functions. For instance it becomes difficult/impossible to impose constraints like Set on View::Type.

Required Associated Types§

Source

type Item

Source

type Iter: Iterator<Item = Self::Item>

Required Methods§

Source

fn view_iter(&'a self) -> Self::Iter

Implementations on Foreign Types§

Source§

impl<'a, T: 'a> ViewIterator<'a> for [T]

Source§

type Item = &'a T

Source§

type Iter = Iter<'a, T>

Source§

fn view_iter(&'a self) -> Self::Iter

Source§

impl<'a, T: 'a> ViewIterator<'a> for Vec<T>

Source§

type Item = &'a T

Source§

type Iter = Iter<'a, T>

Source§

fn view_iter(&'a self) -> Self::Iter

Implementors§

Source§

impl<'a, S> ViewIterator<'a> for ChunkedN<S>
where S: View<'a>, <S as View<'a>>::Type: SplitAt + Set + Dummy,

Source§

type Item = <S as View<'a>>::Type

Source§

type Iter = Chunks<<S as View<'a>>::Type>

Source§

impl<'a, S, I> ViewIterator<'a> for Subset<S, I>
where S: Set + View<'a>, I: AsRef<[usize]>, <S as View<'a>>::Type: SplitAt + SplitFirst + Set + Dummy,

Source§

type Item = <<S as View<'a>>::Type as SplitFirst>::First

Source§

type Iter = SubsetIter<<S as View<'a>>::Type, &'a [usize]>

Source§

impl<'a, S, N> ViewIterator<'a> for UniChunked<S, U<N>>
where S: View<'a>, <S as View<'a>>::Type: IntoStaticChunkIterator<N>, N: Unsigned,

Source§

impl<'a, S, O> ViewIterator<'a> for Chunked<S, O>
where S: View<'a>, O: View<'a, Type = Offsets<&'a [usize]>>, <S as View<'a>>::Type: SplitAt + Set + Dummy,

Source§

type Item = <S as View<'a>>::Type

Source§

type Iter = ChunkedIter<OffsetValuesAndSizes<'a>, <S as View<'a>>::Type>

Source§

impl<'a, S, T, I> ViewIterator<'a> for Sparse<S, T, I>
where S: View<'a>, <S as View<'a>>::Type: Set + IntoIterator,

Source§

type Item = <<S as View<'a>>::Type as IntoIterator>::Item

Source§

type Iter = <<S as View<'a>>::Type as IntoIterator>::IntoIter