Skip to content

Commit c23d450

Browse files
committed
Fix behaviour after iterator exhaustion
1 parent 439beab commit c23d450

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

src/libcore/iter/range.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -377,17 +377,23 @@ impl<A: Step> Iterator for ops::RangeInclusive<A> {
377377

378378
#[inline]
379379
fn last(self) -> Option<A> {
380-
Some(self.end)
380+
if self.start <= self.end {
381+
Some(self.end)
382+
} else { None }
381383
}
382384

383385
#[inline]
384386
fn min(self) -> Option<A> {
385-
Some(self.start)
387+
if self.start <= self.end {
388+
Some(self.start)
389+
} else { None }
386390
}
387391

388392
#[inline]
389393
fn max(self) -> Option<A> {
390-
Some(self.end)
394+
if self.start <= self.end {
395+
Some(self.end)
396+
} else { None }
391397
}
392398
}
393399

src/libcore/tests/iter.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1360,21 +1360,30 @@ fn test_range_max() {
13601360
}
13611361

13621362
#[test]
1363-
fn test_range_inc_last_max() {
1363+
fn test_range_inclusive_last_max() {
13641364
assert_eq!((0..=20).last(), Some(20));
13651365
assert_eq!((-20..=0).last(), Some(0));
13661366
assert_eq!((5..=5).last(), Some(5));
1367+
let mut r = 10..=10;
1368+
r.next();
1369+
assert_eq!(r.last(), None);
13671370

13681371
assert_eq!((0..=20).max(), Some(20));
13691372
assert_eq!((-20..=0).max(), Some(0));
13701373
assert_eq!((5..=5).max(), Some(5));
1374+
let mut r = 10..=10;
1375+
r.next();
1376+
assert_eq!(r.max(), None);
13711377
}
13721378

13731379
#[test]
1374-
fn test_range_inc_min() {
1380+
fn test_range_inclusive_min() {
13751381
assert_eq!((0..=20).min(), Some(0));
13761382
assert_eq!((-20..=0).min(), Some(-20));
13771383
assert_eq!((5..=5).min(), Some(5));
1384+
let mut r = 10..=10;
1385+
r.next();
1386+
assert_eq!(r.min(), None);
13781387
}
13791388

13801389
#[test]

0 commit comments

Comments
 (0)