diff --git a/src/drain.rs b/src/drain.rs index 3f03929..da00770 100644 --- a/src/drain.rs +++ b/src/drain.rs @@ -134,7 +134,7 @@ impl Drop for Drain<'_, T> { // a pointer with mutable provenance is necessary. Therefore we must reconstruct // it from the original vec but also avoid creating a &mut to the front since that could // invalidate raw pointers to it which some unsafe code might rely on. - let vec_ptr = vec.as_mut().as_mut_ptr(); + let vec_ptr = vec.as_mut().data.as_ptr(); let drop_offset = sub_ptr(drop_ptr, vec_ptr); let to_drop = ptr::slice_from_raw_parts_mut(vec_ptr.add(drop_offset), drop_len); ptr::drop_in_place(to_drop); @@ -149,4 +149,3 @@ fn sub_ptr(a: *const T, b: *const T) -> usize { } impl FusedIterator for Drain<'_, T> {} - diff --git a/src/splice.rs b/src/splice.rs index 0749d40..77fa960 100644 --- a/src/splice.rs +++ b/src/splice.rs @@ -104,7 +104,7 @@ impl Drain<'_, T> { let range_start = vec.header.len as usize; let range_end = self.tail_start as usize; let range_slice = unsafe { - slice::from_raw_parts_mut(vec.as_mut_ptr().add(range_start), range_end - range_start) + slice::from_raw_parts_mut(vec.data.as_ptr().add(range_start), range_end - range_start) }; for place in range_slice { @@ -126,10 +126,10 @@ impl Drain<'_, T> { let new_tail_start = self.tail_start + additional; unsafe { - let src = vec.as_ptr().add(self.tail_start); - let dst = vec.as_mut_ptr().add(new_tail_start); + let src = vec.data.as_ptr().add(self.tail_start); + let dst = vec.data.as_ptr().add(new_tail_start); ptr::copy(src, dst, self.tail_len); } self.tail_start = new_tail_start; } -} \ No newline at end of file +} diff --git a/src/vector.rs b/src/vector.rs index 1bc6131..afbaebc 100644 --- a/src/vector.rs +++ b/src/vector.rs @@ -688,7 +688,7 @@ impl RawVector { unsafe { // Set self.vec length's to start, to be safe in case Drain is leaked self.header.len = start as u32; - let range_slice = core::slice::from_raw_parts(self.as_ptr().add(start), end - start); + let range_slice = core::slice::from_raw_parts(self.data.as_ptr().add(start), end - start); Drain { tail_start: end, tail_len: len - end,