Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::ptr::copy_nonoverlapping;
- pub fn reverse<T>(slice: &mut [T]) {
- let len = slice.len();
- let mut aux: Vec<T> = Vec::with_capacity(len);
- let mut front_ptr: *mut T = slice.as_mut_ptr();
- let mut back_ptr: *mut T = aux.as_mut_ptr();
- for _ in 0..4 {
- for i in 0..len {
- let rev_i = len - 1 - i;
- unsafe {
- std::ptr::copy_nonoverlapping(
- front_ptr.add(i), back_ptr.add(rev_i), 1);
- }
- }
- std::mem::swap(&mut front_ptr, &mut back_ptr);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement