Struct itertools::ZipSlices [] [src]

pub struct ZipSlices<T, U> {
    // some fields omitted
}

An iterator which iterates two slices simultaneously.

ZipSlices acts like a double-ended .zip() iterator.

It was intended to be more efficient than .zip(), and it was, then rustc changed how it optimizes so it can not promise improved performance at this time.

Note that elements past the end of the shortest of the two slices are ignored.

Iterator element type for ZipSlices<T, U> is (T::Item, U::Item). For example, for a ZipSlices<&'a [A], &'b mut [B]>, the element type is (&'a A, &'b mut B).

Methods

impl<'a, 'b, A, B> ZipSlices<&'a [A], &'b [B]>

fn new(a: &'a [A], b: &'b [B]) -> Self

Create a new ZipSlices from slices a and b.

Act like a double-ended .zip() iterator, but more efficiently.

Note that elements past the end of the shortest of the two slices are ignored.

impl<T, U> ZipSlices<T, U> where T: Slice, U: Slice

fn from_slices(a: T, b: U) -> Self

Create a new ZipSlices from slices a and b.

Act like a double-ended .zip() iterator, but more efficiently.

Note that elements past the end of the shortest of the two slices are ignored.

Trait Implementations

impl<T, U> Iterator for ZipSlices<T, U> where T: Slice, U: Slice

type Item = (T::Item, U::Item)

fn next(&mut self) -> Option<Self::Item>

fn size_hint(&self) -> (usize, Option<usize>)

1.0.0fn count(self) -> usize

1.0.0fn last(self) -> Option<Self::Item>

1.0.0fn nth(&mut self, n: usize) -> Option<Self::Item>

1.0.0fn chain<U>(self, other: U) -> Chain<Self, U::IntoIter> where U: IntoIterator<Item=Self::Item>

1.0.0fn zip<U>(self, other: U) -> Zip<Self, U::IntoIter> where U: IntoIterator

1.0.0fn map<B, F>(self, f: F) -> Map<Self, F> where F: FnMut(Self::Item) -> B

1.0.0fn filter<P>(self, predicate: P) -> Filter<Self, P> where P: FnMut(&Self::Item) -> bool

1.0.0fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F> where F: FnMut(Self::Item) -> Option<B>

1.0.0fn enumerate(self) -> Enumerate<Self>

1.0.0fn peekable(self) -> Peekable<Self>

1.0.0fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> where P: FnMut(&Self::Item) -> bool

1.0.0fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> where P: FnMut(&Self::Item) -> bool

1.0.0fn skip(self, n: usize) -> Skip<Self>

1.0.0fn take(self, n: usize) -> Take<Self>

1.0.0fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F> where F: FnMut(&mut St, Self::Item) -> Option<B>

1.0.0fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F> where U: IntoIterator, F: FnMut(Self::Item) -> U

1.0.0fn fuse(self) -> Fuse<Self>

1.0.0fn inspect<F>(self, f: F) -> Inspect<Self, F> where F: FnMut(&Self::Item) -> ()

1.0.0fn by_ref(&mut self) -> &mut Self

1.0.0fn collect<B>(self) -> B where B: FromIterator<Self::Item>

1.0.0fn partition<B, F>(self, f: F) -> (B, B) where F: FnMut(&Self::Item) -> bool, B: Default + Extend<Self::Item>

1.0.0fn fold<B, F>(self, init: B, f: F) -> B where F: FnMut(B, Self::Item) -> B

1.0.0fn all<F>(&mut self, f: F) -> bool where F: FnMut(Self::Item) -> bool

1.0.0fn any<F>(&mut self, f: F) -> bool where F: FnMut(Self::Item) -> bool

1.0.0fn find<P>(&mut self, predicate: P) -> Option<Self::Item> where P: FnMut(&Self::Item) -> bool

1.0.0fn position<P>(&mut self, predicate: P) -> Option<usize> where P: FnMut(Self::Item) -> bool

1.0.0fn rposition<P>(&mut self, predicate: P) -> Option<usize> where P: FnMut(Self::Item) -> bool, Self: ExactSizeIterator + DoubleEndedIterator

1.0.0fn max(self) -> Option<Self::Item> where Self::Item: Ord

1.0.0fn min(self) -> Option<Self::Item> where Self::Item: Ord

fn max_by<B, F>(self, f: F) -> Option<Self::Item> where F: FnMut(&Self::Item) -> B, B: Ord

1.6.0fn max_by_key<B, F>(self, f: F) -> Option<Self::Item> where B: Ord, F: FnMut(&Self::Item) -> B

fn min_by<B, F>(self, f: F) -> Option<Self::Item> where F: FnMut(&Self::Item) -> B, B: Ord

1.6.0fn min_by_key<B, F>(self, f: F) -> Option<Self::Item> where F: FnMut(&Self::Item) -> B, B: Ord

1.0.0fn rev(self) -> Rev<Self> where Self: DoubleEndedIterator

1.0.0fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB) where Self: Iterator<Item=(A, B)>, FromB: Default + Extend<B>, FromA: Default + Extend<A>

1.0.0fn cloned<'a, T>(self) -> Cloned<Self> where Self: Iterator<Item=&'a T>, T: 'a + Clone

1.0.0fn cycle(self) -> Cycle<Self> where Self: Clone

fn sum<S>(self) -> S where S: Add<Self::Item, Output=S> + Zero

fn product<P>(self) -> P where P: Mul<Self::Item, Output=P> + One

1.5.0fn cmp<I>(self, other: I) -> Ordering where I: IntoIterator<Item=Self::Item>, Self::Item: Ord

1.5.0fn partial_cmp<I>(self, other: I) -> Option<Ordering> where I: IntoIterator, Self::Item: PartialOrd<I::Item>

1.5.0fn eq<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialEq<I::Item>

1.5.0fn ne<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialEq<I::Item>

1.5.0fn lt<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialOrd<I::Item>

1.5.0fn le<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialOrd<I::Item>

1.5.0fn gt<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialOrd<I::Item>

1.5.0fn ge<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialOrd<I::Item>

impl<T, U> DoubleEndedIterator for ZipSlices<T, U> where T: Slice, U: Slice

fn next_back(&mut self) -> Option<Self::Item>

impl<T, U> ExactSizeIterator for ZipSlices<T, U> where T: Slice, U: Slice

1.0.0fn len(&self) -> usize

impl<T, U> Slice for ZipSlices<T, U> where T: Slice, U: Slice

type Item = (T::Item, U::Item)

fn len(&self) -> usize

unsafe fn get_unchecked(&mut self, i: usize) -> Self::Item

Derived Implementations

impl<T: Clone, U: Clone> Clone for ZipSlices<T, U>

fn clone(&self) -> ZipSlices<T, U>

1.0.0fn clone_from(&mut self, source: &Self)