use core::{
ffi::CStr,
mem,
ptr::{self, NonNull},
};
use crate::helper::valid_align::ValidAlign;
pub(crate) unsafe trait Aligned {
const ALIGN: ValidAlign;
const DANGLING_THIN: NonNull<()> =
NonNull::new(ptr::without_provenance_mut(Self::ALIGN.get())).unwrap();
}
unsafe impl<T> Aligned for T {
const ALIGN: ValidAlign = ValidAlign::new(mem::align_of::<T>()).unwrap();
}
unsafe impl<T> Aligned for [T] {
const ALIGN: ValidAlign = ValidAlign::new(mem::align_of::<T>()).unwrap();
}
unsafe impl Aligned for str {
const ALIGN: ValidAlign = ValidAlign::new(mem::align_of_val("")).unwrap();
}
unsafe impl Aligned for CStr {
const ALIGN: ValidAlign = ValidAlign::new(mem::align_of_val(&c"")).unwrap();
}