Skip to content

Commit 5aa625b

Browse files
committed
Manually fuse the inner iterator in FlattenCompat
1 parent f241c10 commit 5aa625b

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

library/core/src/iter/adapters/flatten.rs

+14-2
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,13 @@ where
265265
}
266266
}
267267
match self.iter.next() {
268-
None => return self.backiter.as_mut()?.next(),
268+
None => match self.backiter.as_mut()?.next() {
269+
None => {
270+
self.backiter = None;
271+
return None;
272+
}
273+
elt @ Some(_) => return elt,
274+
},
269275
Some(inner) => self.frontiter = Some(inner.into_iter()),
270276
}
271277
}
@@ -353,7 +359,13 @@ where
353359
}
354360
}
355361
match self.iter.next_back() {
356-
None => return self.frontiter.as_mut()?.next_back(),
362+
None => match self.frontiter.as_mut()?.next_back() {
363+
None => {
364+
self.frontiter = None;
365+
return None;
366+
}
367+
elt @ Some(_) => return elt,
368+
},
357369
next => self.backiter = next.map(IntoIterator::into_iter),
358370
}
359371
}

0 commit comments

Comments
 (0)