Guest User

Untitled

a guest
Nov 19th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.65 KB | None | 0 0
  1. /// Consumes a generic array, splitting it at a given position.
  2. pub fn split<M: ArrayLength<T>>(self) -> (GenericArray<T, M>, GenericArray<T, Diff<N, M>>)
  3. where
  4. N: Sub<M>,
  5. Diff<N, M>: ArrayLength<T>,
  6. {
  7. unsafe {
  8. let array_ptr = &self as *const GenericArray<T, N>;
  9. let ptr1 = mem::transmute::<_, *const GenericArray<T, M>>(array_ptr);
  10. let tmp = mem::transmute::<_, *const T>(array_ptr);
  11. let ptr2 = mem::transmute::<_, *const GenericArray<T, Diff<N, M>>>(
  12. tmp.offset(M::to_usize() as isize),
  13. );
  14. (ptr::read(ptr1), ptr::read(ptr2))
  15. }
  16. }
Add Comment
Please, Sign In to add comment