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}