#![allow(warnings)]
mod util;
use std::{marker::PhantomData, mem::ManuallyDrop, option::IntoIter};
use {static_assertions::assert_impl_all, zerocopy::AsBytes};
use self::util::AU16;
#[derive(AsBytes)]
#[repr(C)]
struct CZst;
assert_impl_all!(CZst: AsBytes);
#[derive(AsBytes)]
#[repr(C)]
struct C {
a: u8,
b: u8,
c: AU16,
}
assert_impl_all!(C: AsBytes);
#[derive(AsBytes)]
#[repr(transparent)]
struct Transparent {
a: u8,
b: CZst,
}
assert_impl_all!(Transparent: AsBytes);
#[derive(AsBytes)]
#[repr(transparent)]
struct TransparentGeneric<T: ?Sized> {
a: CZst,
b: T,
}
assert_impl_all!(TransparentGeneric<u64>: AsBytes);
assert_impl_all!(TransparentGeneric<[u64]>: AsBytes);
#[derive(AsBytes)]
#[repr(C, packed)]
struct CZstPacked;
assert_impl_all!(CZstPacked: AsBytes);
#[derive(AsBytes)]
#[repr(C, packed)]
struct CPacked {
a: u8,
b: u16,
}
assert_impl_all!(CPacked: AsBytes);
#[derive(AsBytes)]
#[repr(C, packed)]
struct CPackedGeneric<T, U: ?Sized> {
t: T,
u: ManuallyDrop<U>,
}
assert_impl_all!(CPackedGeneric<u8, AU16>: AsBytes);
assert_impl_all!(CPackedGeneric<u8, [AU16]>: AsBytes);
#[derive(AsBytes)]
#[repr(packed)]
struct Packed {
a: u8,
b: u16,
}
assert_impl_all!(Packed: AsBytes);
#[derive(AsBytes)]
#[repr(packed)]
struct PackedGeneric<T, U: ?Sized> {
t: T,
u: ManuallyDrop<U>,
}
assert_impl_all!(PackedGeneric<u8, AU16>: AsBytes);
assert_impl_all!(PackedGeneric<u8, [AU16]>: AsBytes);
#[derive(AsBytes)]
#[repr(transparent)]
struct Unsized {
a: [u8],
}
assert_impl_all!(Unsized: AsBytes);