Use add instead of offset to avoid casting to isize.

This commit is contained in:
Hanif Bin Ariffin
2020-10-21 20:50:00 +08:00
parent 4043c58de7
commit 92867bb118
2 changed files with 7 additions and 7 deletions
+3 -3
View File
@@ -230,7 +230,7 @@ impl<A> ArrayString<A>
return Err(CapacityError::new(s)); return Err(CapacityError::new(s));
} }
unsafe { unsafe {
let dst = self.xs.ptr_mut().offset(self.len() as isize); let dst = self.xs.ptr_mut().add(self.len());
let src = s.as_ptr(); let src = s.as_ptr();
ptr::copy_nonoverlapping(src, dst, s.len()); ptr::copy_nonoverlapping(src, dst, s.len());
let newl = self.len() + s.len(); let newl = self.len() + s.len();
@@ -321,8 +321,8 @@ impl<A> ArrayString<A>
let next = idx + ch.len_utf8(); let next = idx + ch.len_utf8();
let len = self.len(); let len = self.len();
unsafe { unsafe {
ptr::copy(self.xs.ptr().offset(next as isize), ptr::copy(self.xs.ptr().add(next),
self.xs.ptr_mut().offset(idx as isize), self.xs.ptr_mut().add(idx),
len - next); len - next);
self.set_len(len - (next - idx)); self.set_len(len - (next - idx));
} }
+4 -4
View File
@@ -555,7 +555,7 @@ impl<A: Array> ArrayVec<A> {
let other_len = other.len(); let other_len = other.len();
unsafe { unsafe {
let dst = self.xs.ptr_mut().offset(self_len as isize); let dst = self.xs.ptr_mut().add(self_len);
ptr::copy_nonoverlapping(other.as_ptr(), dst, other_len); ptr::copy_nonoverlapping(other.as_ptr(), dst, other_len);
self.set_len(self_len + other_len); self.set_len(self_len + other_len);
} }
@@ -937,8 +937,8 @@ impl<'a, A: Array> Drop for Drain<'a, A>
// memmove back untouched tail, update to new length // memmove back untouched tail, update to new length
let start = source_vec.len(); let start = source_vec.len();
let tail = self.tail_start; let tail = self.tail_start;
let src = source_vec.as_ptr().offset(tail as isize); let src = source_vec.as_ptr().add(tail);
let dst = source_vec.as_mut_ptr().offset(start as isize); let dst = source_vec.as_mut_ptr().add(start);
ptr::copy(src, dst, self.tail_len); ptr::copy(src, dst, self.tail_len);
source_vec.set_len(start + self.tail_len); source_vec.set_len(start + self.tail_len);
} }
@@ -1007,7 +1007,7 @@ unsafe fn raw_ptr_add<T>(ptr: *mut T, offset: usize) -> *mut T {
// Special case for ZST // Special case for ZST
(ptr as usize).wrapping_add(offset) as _ (ptr as usize).wrapping_add(offset) as _
} else { } else {
ptr.offset(offset as isize) ptr.add(offset)
} }
} }