Closes #660
Implement ExactSizeIterator without any additional cost:
For CircularTupleWindows by flattenning the struct Take<I> { iter: I, n: usize } from iter: Take<TupleWindows<Cycle<I>, T>> into iter: TupleWindows<Cycle<I>, T>, len: usize.
It has the same length as the input (exact size) iterator.
Implement FusedIterator as well.
For TupleWindows if the input iterator is exact sized. Relies on the fact that T::num_items() - 1 items are collected at definition.
Closes #660 Implement
ExactSizeIterator
without any additional cost:CircularTupleWindows
by flattenning thestruct Take<I> { iter: I, n: usize }
fromiter: Take<TupleWindows<Cycle<I>, T>>
intoiter: TupleWindows<Cycle<I>, T>, len: usize
. It has the same length as the input (exact size) iterator. ImplementFusedIterator
as well.TupleWindows
if the input iterator is exact sized. Relies on the fact thatT::num_items() - 1
items are collected at definition.