Fuse FlattenCompat's inner iterator

This commit is contained in:
Tim Vermeulen 2020-02-05 00:09:02 +01:00
parent 14bcf0aaa5
commit 16a23e72d0
1 changed files with 7 additions and 4 deletions

View File

@ -1,7 +1,7 @@
use crate::fmt;
use crate::ops::Try;
use super::super::{DoubleEndedIterator, FusedIterator, Iterator};
use super::super::{DoubleEndedIterator, Fuse, FusedIterator, Iterator};
use super::Map;
/// An iterator that maps each element to an iterator, and yields the elements
@ -239,14 +239,17 @@ where
/// this type.
#[derive(Clone, Debug)]
struct FlattenCompat<I, U> {
iter: I,
iter: Fuse<I>,
frontiter: Option<U>,
backiter: Option<U>,
}
impl<I, U> FlattenCompat<I, U> {
impl<I, U> FlattenCompat<I, U>
where
I: Iterator,
{
/// Adapts an iterator by flattening it, for use in `flatten()` and `flat_map()`.
fn new(iter: I) -> FlattenCompat<I, U> {
FlattenCompat { iter, frontiter: None, backiter: None }
FlattenCompat { iter: iter.fuse(), frontiter: None, backiter: None }
}
}