use core::mem;
#[ doc(hidden)]
pub struct Layout<T: ?Sized>(T);
#[ doc(hidden)]
pub trait LayoutUnsized<T: ?Sized> {
const SIZE: usize = usize::MAX;
const ALIGN: usize = usize::MAX;
}
impl <T: ?Sized> LayoutUnsized<T> for Layout<T> {}
impl <T> Layout<T> {
pub const SIZE: usize = mem::size_of::<T>();
pub const ALIGN: usize = mem::align_of::<T>();
}
#[ doc(hidden)]
#[ inline]
pub fn assert_layout<Outer: ?Sized, Inner: ?Sized>(
name: &'static str,
outer_size: usize,
inner_size: usize,
outer_align: usize,
inner_align: usize,
) {
if outer_size != inner_size {
#[ cfg(no_intrinsic_type_name)]
panic!(
"unexpected size in cast to {}: {} != {}" ,
name, outer_size, inner_size,
);
#[ cfg(not(no_intrinsic_type_name))]
panic!(
"unexpected size in cast from {} to {}: {} != {}" ,
core::any::type_name::<Inner>(),
core::any::type_name::<Outer>(),
inner_size,
outer_size,
);
}
if outer_align != inner_align {
#[ cfg(no_intrinsic_type_name)]
panic!(
"unexpected alignment in cast to {}: {} != {}" ,
name, outer_align, inner_align,
);
#[ cfg(not(no_intrinsic_type_name))]
panic!(
"unexpected alignment in cast from {} to {}: {} != {}" ,
core::any::type_name::<Inner>(),
core::any::type_name::<Outer>(),
inner_align,
outer_align,
);
}
#[ cfg(not(no_intrinsic_type_name))]
let _ = name;
}
Messung V0.5 in Prozent C=86 H=96 G=90
¤ Dauer der Verarbeitung: 0.11 Sekunden
(vorverarbeitet am 2026-08-25)
¤
*© Formatika GbR, Deutschland