Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// Consumes a generic array, splitting it at a given position.
- pub fn split<M: ArrayLength<T>>(self) -> (GenericArray<T, M>, GenericArray<T, Diff<N, M>>)
- where
- N: Sub<M>,
- Diff<N, M>: ArrayLength<T>,
- {
- unsafe {
- let array_ptr = &self as *const GenericArray<T, N>;
- let ptr1 = mem::transmute::<_, *const GenericArray<T, M>>(array_ptr);
- let tmp = mem::transmute::<_, *const T>(array_ptr);
- let ptr2 = mem::transmute::<_, *const GenericArray<T, Diff<N, M>>>(
- tmp.offset(M::to_usize() as isize),
- );
- (ptr::read(ptr1), ptr::read(ptr2))
- }
- }
Add Comment
Please, Sign In to add comment