use std::ptr::Alignment; /// Returns the ABI-required minimum alignment of a type in bytes. /// /// This is equivalent to [`align_of`], but also works for some unsized /// types (e.g. slices or rustc's `List`s). pub const fn align_of() -> Alignment { T::ALIGN } /// A type with a statically known alignment. /// /// # Safety /// /// `Self::ALIGN` must be equal to the alignment of `Self`. For sized types it /// is [`align_of::()`], for unsized types it depends on the type, for /// example `[T]` has alignment of `T`. /// /// [`align_of::()`]: align_of pub unsafe trait Aligned { /// Alignment of `Self`. const ALIGN: Alignment; } unsafe impl Aligned for T { const ALIGN: Alignment = Alignment::of::(); } unsafe impl Aligned for [T] { const ALIGN: Alignment = Alignment::of::(); }