@@ -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