Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.54 KB | None | 0 0
  1. /// Inserts a slice at a specific location in a vec.
  2. pub fn insert_slice_at<T: Copy>(vec: &mut Vec<T>, index: usize, slice: &[T]) {
  3. unsafe {
  4. assert!(index <= vec.len());
  5. vec.reserve(slice.len());
  6. let insert_ptr = vec.as_mut_ptr().offset(index as isize);
  7. std::ptr::copy(
  8. insert_ptr,
  9. insert_ptr.offset(slice.len() as isize),
  10. vec.len() - index,
  11. );
  12. std::ptr::copy_nonoverlapping(slice.as_ptr(), insert_ptr, slice.len());
  13. vec.set_len(vec.len() + slice.len());
  14. }
  15. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement