diff options
| author | Tim Vermeulen <tvermeulen@me.com> | 2020-02-05 00:09:02 +0100 |
|---|---|---|
| committer | Tim Vermeulen <tvermeulen@me.com> | 2020-02-10 13:32:21 +0100 |
| commit | 16a23e72d05b0e3cb48f0a5442e651725bf27ae8 (patch) | |
| tree | de8a366639ab4f87a0c8e22e705dfbbfb7a84d3d /src/libcore/iter | |
| parent | 14bcf0aaa51138afdd95190d814f4b46013f990e (diff) | |
| download | rust-16a23e72d05b0e3cb48f0a5442e651725bf27ae8.tar.gz rust-16a23e72d05b0e3cb48f0a5442e651725bf27ae8.zip | |
Fuse FlattenCompat's inner iterator
Diffstat (limited to 'src/libcore/iter')
| -rw-r--r-- | src/libcore/iter/adapters/flatten.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/libcore/iter/adapters/flatten.rs b/src/libcore/iter/adapters/flatten.rs index 0a7a9f26f89..6000214af43 100644 --- a/src/libcore/iter/adapters/flatten.rs +++ b/src/libcore/iter/adapters/flatten.rs @@ -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 } } } |
