pub fn copy_slice(mut dst: D, src: S) -> usize where S: AsRef<[T]>, D: AsMut<[T]>, T: Clone { let mut sz=0; for (d,s) in dst.as_mut().iter_mut().zip(src.as_ref().iter()) { *d = s.clone(); sz+=1; } sz } #[inline] pub fn reinterpret(src: &T) -> &[u8] where T: ?Sized { unsafe { std::slice::from_raw_parts(src as *const T as *const u8, std::mem::size_of_val(src)) } } pub fn reinterpret_back(src: &[u8]) -> &T where T: ?Sized + Copy { unsafe { &*(&src[0] as *const u8 as *const T) } }