- /// Copies all values from `src` to `self`, wrapping around if needed.
- /// Assumes capacity is sufficient.
- #[inline]
- unsafe fn copy_slice(&mut self, src: &[T]) {
- let dst_high_ptr = self.ptr().add(self.head);
- let dst_high_len = self.cap() - self.head;
-
- let split = cmp::min(src.len(), dst_high_len);
- let (src_high, src_low) = src.split_at(split);
-
- ptr::copy_nonoverlapping(src_high.as_ptr(), dst_high_ptr, src_high.len());
- ptr::copy_nonoverlapping(src_low.as_ptr(), self.ptr(), src_low.len());
-
- self.head = self.wrap_add(self.head, src.len());
- }
-