@@ -64,7 +64,7 @@ macro_rules! iterator {
64
64
// backwards by `n`. `n` must not exceed `self.len()`.
65
65
macro_rules! zst_shrink {
66
66
($self: ident, $n: ident) => {
67
- $self.end = $self.end.wrapping_byte_offset(- $n);
67
+ $self.end = $self.end.wrapping_byte_sub( $n);
68
68
}
69
69
}
70
70
@@ -82,15 +82,15 @@ macro_rules! iterator {
82
82
// returning the old start.
83
83
// Unsafe because the offset must not exceed `self.len()`.
84
84
#[inline(always)]
85
- unsafe fn post_inc_start(&mut self, offset: isize ) -> * $raw_mut T {
85
+ unsafe fn post_inc_start(&mut self, offset: usize ) -> * $raw_mut T {
86
86
if mem::size_of::<T>() == 0 {
87
87
zst_shrink!(self, offset);
88
88
self.ptr.as_ptr()
89
89
} else {
90
90
let old = self.ptr.as_ptr();
91
91
// SAFETY: the caller guarantees that `offset` doesn't exceed `self.len()`,
92
92
// so this new pointer is inside `self` and thus guaranteed to be non-null.
93
- self.ptr = unsafe { NonNull::new_unchecked(self.ptr.as_ptr().offset (offset)) };
93
+ self.ptr = unsafe { NonNull::new_unchecked(self.ptr.as_ptr().add (offset)) };
94
94
old
95
95
}
96
96
}
@@ -99,15 +99,15 @@ macro_rules! iterator {
99
99
// returning the new end.
100
100
// Unsafe because the offset must not exceed `self.len()`.
101
101
#[inline(always)]
102
- unsafe fn pre_dec_end(&mut self, offset: isize ) -> * $raw_mut T {
102
+ unsafe fn pre_dec_end(&mut self, offset: usize ) -> * $raw_mut T {
103
103
if mem::size_of::<T>() == 0 {
104
104
zst_shrink!(self, offset);
105
105
self.ptr.as_ptr()
106
106
} else {
107
107
// SAFETY: the caller guarantees that `offset` doesn't exceed `self.len()`,
108
108
// which is guaranteed to not overflow an `isize`. Also, the resulting pointer
109
109
// is in bounds of `slice`, which fulfills the other requirements for `offset`.
110
- self.end = unsafe { self.end.offset(- offset) };
110
+ self.end = unsafe { self.end.sub( offset) };
111
111
self.end
112
112
}
113
113
}
@@ -180,7 +180,7 @@ macro_rules! iterator {
180
180
}
181
181
// SAFETY: We are in bounds. `post_inc_start` does the right thing even for ZSTs.
182
182
unsafe {
183
- self.post_inc_start(n as isize );
183
+ self.post_inc_start(n);
184
184
Some(next_unchecked!(self))
185
185
}
186
186
}
@@ -189,7 +189,7 @@ macro_rules! iterator {
189
189
fn advance_by(&mut self, n: usize) -> Result<(), usize> {
190
190
let advance = cmp::min(len!(self), n);
191
191
// SAFETY: By construction, `advance` does not exceed `self.len()`.
192
- unsafe { self.post_inc_start(advance as isize ) };
192
+ unsafe { self.post_inc_start(advance) };
193
193
if advance == n { Ok(()) } else { Err(advance) }
194
194
}
195
195
@@ -375,7 +375,7 @@ macro_rules! iterator {
375
375
}
376
376
// SAFETY: We are in bounds. `pre_dec_end` does the right thing even for ZSTs.
377
377
unsafe {
378
- self.pre_dec_end(n as isize );
378
+ self.pre_dec_end(n);
379
379
Some(next_back_unchecked!(self))
380
380
}
381
381
}
@@ -384,7 +384,7 @@ macro_rules! iterator {
384
384
fn advance_back_by(&mut self, n: usize) -> Result<(), usize> {
385
385
let advance = cmp::min(len!(self), n);
386
386
// SAFETY: By construction, `advance` does not exceed `self.len()`.
387
- unsafe { self.pre_dec_end(advance as isize ) };
387
+ unsafe { self.pre_dec_end(advance) };
388
388
if advance == n { Ok(()) } else { Err(advance) }
389
389
}
390
390
}
0 commit comments