diff --git a/library/core/src/ops/range.rs b/library/core/src/ops/range.rs index 1da186d9fbb..084ddffab0b 100644 --- a/library/core/src/ops/range.rs +++ b/library/core/src/ops/range.rs @@ -495,7 +495,7 @@ impl> RangeInclusive { Idx: PartialOrd, U: ?Sized + PartialOrd, { - !self.exhausted && >::contains(self, item) + >::contains(self, item) } /// Returns `true` if the range contains no items. @@ -891,7 +891,13 @@ impl RangeBounds for RangeInclusive { Included(&self.start) } fn end_bound(&self) -> Bound<&T> { - Included(&self.end) + if self.exhausted { + // When the iterator is exhausted, we usually have start == end, + // but we want the range to appear empty, containing nothing. + Excluded(&self.end) + } else { + Included(&self.end) + } } }