Skip to content

Commit 16a23e7

Browse files
committed
Fuse FlattenCompat's inner iterator
1 parent 14bcf0a commit 16a23e7

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/libcore/iter/adapters/flatten.rs

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::fmt;
22
use crate::ops::Try;
33

4-
use super::super::{DoubleEndedIterator, FusedIterator, Iterator};
4+
use super::super::{DoubleEndedIterator, Fuse, FusedIterator, Iterator};
55
use super::Map;
66

77
/// An iterator that maps each element to an iterator, and yields the elements
@@ -239,14 +239,17 @@ where
239239
/// this type.
240240
#[derive(Clone, Debug)]
241241
struct FlattenCompat<I, U> {
242-
iter: I,
242+
iter: Fuse<I>,
243243
frontiter: Option<U>,
244244
backiter: Option<U>,
245245
}
246-
impl<I, U> FlattenCompat<I, U> {
246+
impl<I, U> FlattenCompat<I, U>
247+
where
248+
I: Iterator,
249+
{
247250
/// Adapts an iterator by flattening it, for use in `flatten()` and `flat_map()`.
248251
fn new(iter: I) -> FlattenCompat<I, U> {
249-
FlattenCompat { iter, frontiter: None, backiter: None }
252+
FlattenCompat { iter: iter.fuse(), frontiter: None, backiter: None }
250253
}
251254
}
252255

0 commit comments

Comments
 (0)