to_bytes/
to_sized_array.rs

1use crate::*;
2
3#[deprecated]
4/// wait cont number `<const N: usize>`
5pub trait ToSizedArray<T> {
6    /// must be array `[T; N]`
7    type OutArr: Sized + AsRef<[T]> + Copy;
8    fn to_sized_array(self) -> Self::OutArr;
9}
10
11//\////////////////////////////////////////////////////////////////////////////////////////////////////
12
13#[allow(deprecated)]
14impl<T: ToSizedArray<u8>> ToBytes for T {
15    #[inline(always)]
16    fn to_bytes(self) -> Bytes {
17        Bytes { inner: Some(self.to_sized_array().as_ref().to_vec()), drops: None }
18    }
19}
20
21#[allow(deprecated)]
22impl<'a, T: ToSizedArray<u8>> ReadBack<'a> for T {
23    #[inline(always)]
24    unsafe fn read_back(ptr: *const u8) -> &'a Self {
25        &*(ptr as *const T)
26    }
27}
28
29#[allow(deprecated)]
30impl<'a, T: ToSizedArray<u8>> ReadBackMut<'a> for T {
31    #[inline(always)]
32    unsafe fn read_back_mut(ptr: *mut u8) -> &'a mut Self {
33        &mut *(ptr as *mut T)
34    }
35}
36
37#[allow(deprecated)]
38impl<T: ToSizedArray<u8> + Copy> TransmuteBack for T {
39    #[inline(always)]
40    unsafe fn transmute_back(ptr: *const u8) -> Self {
41        *(ptr as *const T)
42    }
43}