We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
2 parents 788036d + 5aa625b commit 94e093aCopy full SHA for 94e093a
2 files changed
library/core/src/iter/adapters/flatten.rs
@@ -265,7 +265,13 @@ where
265
}
266
267
match self.iter.next() {
268
- None => return self.backiter.as_mut()?.next(),
+ None => match self.backiter.as_mut()?.next() {
269
+ None => {
270
+ self.backiter = None;
271
+ return None;
272
+ }
273
+ elt @ Some(_) => return elt,
274
+ },
275
Some(inner) => self.frontiter = Some(inner.into_iter()),
276
277
@@ -353,7 +359,13 @@ where
353
359
354
360
355
361
match self.iter.next_back() {
356
- None => return self.frontiter.as_mut()?.next_back(),
362
+ None => match self.frontiter.as_mut()?.next_back() {
363
364
+ self.frontiter = None;
365
366
367
368
357
369
next => self.backiter = next.map(IntoIterator::into_iter),
358
370
371
library/core/tests/iter/adapters/flatten.rs
@@ -64,6 +64,14 @@ fn test_flatten_non_fused_outer() {
64
assert_eq!(iter.next_back(), Some(1));
65
assert_eq!(iter.next(), Some(0));
66
assert_eq!(iter.next(), None);
67
+ assert_eq!(iter.next(), None);
68
+
69
+ let mut iter = NonFused::new(once(0..2)).flatten();
70
71
+ assert_eq!(iter.next(), Some(0));
72
+ assert_eq!(iter.next_back(), Some(1));
73
+ assert_eq!(iter.next_back(), None);
74
75
76
77
#[test]
@@ -74,6 +82,15 @@ fn test_flatten_non_fused_inner() {
82
83
assert_eq!(iter.next(), Some(1));
84
85
86
87
+ let mut iter = once(0..1).chain(once(1..3)).flat_map(NonFused::new);
88
89
90
+ assert_eq!(iter.next_back(), Some(2));
91
92
93
94
78
95
79
96
0 commit comments