pub trait IteratorCollateExt: Iterator {
    // Provided method
    fn collate(self) -> Collator<Self>
       where Self: Sized { ... }
}
Expand description

Collate an Iterator where Self::Item impls Collate.

Provided Methods§

source

fn collate(self) -> Collator<Self>where Self: Sized,

Collates (unzips) items - very similar to std::iter::Iterator::unzip, but works on items that are Vecs or arrays

For example:

  • An item of Vec<(usize, usize)> becomes (Vec<usize>, Vec<usize>)
  • An item of [(usize, usize); N] becomes ([usize; N], [usize; N]

Example implementations:

let data = [[('a', 'b'); 10], [('c', 'd'); 10], [('e', 'f'); 10]];
// we use collate to transform each batch:
let mut iter = data.into_iter().collate();
assert_eq!(iter.next().unwrap(), (['a'; 10], ['b'; 10]));
assert_eq!(iter.next().unwrap(), (['c'; 10], ['d'; 10]));
assert_eq!(iter.next().unwrap(), (['e'; 10], ['f'; 10]));

Implementors§