linearize/impls/
phantom_data.rs

1use {crate::Linearize, core::marker::PhantomData};
2
3unsafe impl<X> Linearize for PhantomData<X>
4where
5    X: ?Sized,
6{
7    type Storage<T> = [T; 1];
8    type CopyStorage<T>
9        = [T; 1]
10    where
11        T: Copy;
12    const LENGTH: usize = 1;
13
14    #[inline]
15    fn linearize(&self) -> usize {
16        0
17    }
18
19    #[inline]
20    unsafe fn from_linear_unchecked(_linear: usize) -> Self
21    where
22        Self: Sized,
23    {
24        PhantomData
25    }
26}
27
28impl_assert!(PhantomData<u8>, 1);
29
30#[test]
31fn test() {
32    assert_roundtrip!(PhantomData::<u8>, 0);
33}