use crate::*;
use core::mem;
use frunk::hlist::{HCons, HNil};
use frunk_core::generic::Generic;
pub unsafe trait FromZeros {
#[inline(always)]
fn zeroed() -> Self
where Self: Sized,
{
unsafe { mem::zeroed() }
}
}
unsafe impl<T> FromZeros for *const T {}
unsafe impl<T> FromZeros for *mut T {}
unsafe impl FromZeros for i8 {}
unsafe impl FromZeros for i16 {}
unsafe impl FromZeros for i32 {}
unsafe impl FromZeros for i64 {}
unsafe impl FromZeros for i128 {}
unsafe impl FromZeros for isize {}
unsafe impl FromZeros for u8 {}
unsafe impl FromZeros for u16 {}
unsafe impl FromZeros for u32 {}
unsafe impl FromZeros for u64 {}
unsafe impl FromZeros for u128 {}
unsafe impl FromZeros for usize {}
unsafe impl FromZeros for f32 {}
unsafe impl FromZeros for f64 {}
pub struct Struct<F>(F);
unsafe impl<T: Generic + ReprC> FromZeros for T
where
T: NoPadding,
Struct<<Self as Generic>::Repr>: FromZeros,
{}
unsafe impl FromZeros for Struct<HNil> {}
unsafe impl<H, Tail> FromZeros for Struct<HCons<H, Tail>>
where
H: FromZeros,
Struct<Tail>: FromZeros,
{}