Use volatile memmove to copy elements from one part of slice to another part:
(&mut self, src: impl RangeBounds<usize>, dest: usize)
| 213 | |
| 214 | // Use volatile memmove to copy elements from one part of slice to another part: |
| 215 | pub fn cpinternal(&mut self, src: impl RangeBounds<usize>, dest: usize) |
| 216 | where |
| 217 | T: Copy, |
| 218 | R: DerefMut, |
| 219 | { |
| 220 | let Range |
| 221 | { |
| 222 | start: src_start, |
| 223 | end: src_end, |
| 224 | } = range(src, ..self.reference.len()); |
| 225 | let count = src_end - src_start; |
| 226 | assert!(dest <= self.reference.len() - count, "DESTINATION OUT OF BOUNDS"); |
| 227 | |
| 228 | unsafe |
| 229 | { |
| 230 | intrinsics::volatile_copy_memory(self.reference.as_mut_ptr().add(dest), self.reference.as_ptr().add(src_start), count); |
| 231 | } |
| 232 | } |
| 233 | } |
| 234 | |
| 235 |