mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
Rollup merge of #89335 - mbrubeck:range-is-sorted, r=cuviper
Optimize is_sorted for Range and RangeInclusive The [`Step`] trait guarantees that `Range<impl Step>` yields items in sorted order. We can override `Iterator::is_sorted` based on this guarantee, as we already do for `Iterator::min` and `max`. Thank you to ``@fiveseven-lambda`` who pointed this out [on the Rust Users Forum](https://users.rust-lang.org/t/is-sorted-method-in-impl-iterator-for-range/64717). [`Step`]: https://doc.rust-lang.org/stable/std/iter/trait.Step.html
This commit is contained in:
commit
8f9f3aa04d
@ -672,6 +672,11 @@ impl<A: Step> Iterator for ops::Range<A> {
|
||||
self.next_back()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn is_sorted(self) -> bool {
|
||||
true
|
||||
}
|
||||
|
||||
#[inline]
|
||||
#[doc(hidden)]
|
||||
unsafe fn __iterator_get_unchecked(&mut self, idx: usize) -> Self::Item
|
||||
@ -1095,6 +1100,11 @@ impl<A: Step> Iterator for ops::RangeInclusive<A> {
|
||||
fn max(mut self) -> Option<A> {
|
||||
self.next_back()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn is_sorted(self) -> bool {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
#[stable(feature = "inclusive_range", since = "1.26.0")]
|
||||
|
Loading…
Reference in New Issue
Block a user