Skip to content

Commit 9f6e23e

Browse files
committed
Constify Range functions
1 parent a00a515 commit 9f6e23e

File tree

4 files changed

+167
-88
lines changed

4 files changed

+167
-88
lines changed

library/core/src/ops/index_range.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ use crate::ub_checks;
99
///
1010
/// (Normal `Range` code needs to handle degenerate ranges like `10..0`,
1111
/// which takes extra checks compared to only handling the canonical form.)
12-
#[derive(Clone, Debug, PartialEq, Eq)]
12+
#[derive(Debug, Clone)]
13+
#[derive_const(Eq, PartialEq)]
1314
pub(crate) struct IndexRange {
1415
start: usize,
1516
end: usize,
@@ -54,7 +55,7 @@ impl IndexRange {
5455
/// # Safety
5556
/// - Can only be called when `start < end`, aka when `len > 0`.
5657
#[inline]
57-
unsafe fn next_unchecked(&mut self) -> usize {
58+
const unsafe fn next_unchecked(&mut self) -> usize {
5859
debug_assert!(self.start < self.end);
5960

6061
let value = self.start;
@@ -66,7 +67,7 @@ impl IndexRange {
6667
/// # Safety
6768
/// - Can only be called when `start < end`, aka when `len > 0`.
6869
#[inline]
69-
unsafe fn next_back_unchecked(&mut self) -> usize {
70+
const unsafe fn next_back_unchecked(&mut self) -> usize {
7071
debug_assert!(self.start < self.end);
7172

7273
// SAFETY: The range isn't empty, so this cannot overflow
@@ -116,7 +117,7 @@ impl IndexRange {
116117
}
117118

118119
#[inline]
119-
fn assume_range(&self) {
120+
const fn assume_range(&self) {
120121
// SAFETY: This is the type invariant
121122
unsafe { crate::hint::assert_unchecked(self.start <= self.end) }
122123
}

0 commit comments

Comments
 (0)