Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.54 KB | None | 0 0
  1. use std::ptr::copy_nonoverlapping;
  2.  
  3. pub fn reverse<T>(slice: &mut [T]) {
  4. let len = slice.len();
  5. let mut aux: Vec<T> = Vec::with_capacity(len);
  6.  
  7. let mut front_ptr: *mut T = slice.as_mut_ptr();
  8. let mut back_ptr: *mut T = aux.as_mut_ptr();
  9.  
  10. for _ in 0..4 {
  11. for i in 0..len {
  12. let rev_i = len - 1 - i;
  13. unsafe {
  14. std::ptr::copy_nonoverlapping(
  15. front_ptr.add(i), back_ptr.add(rev_i), 1);
  16. }
  17. }
  18. std::mem::swap(&mut front_ptr, &mut back_ptr);
  19. }
  20. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement