use std::ptr::Alignment; /// Returns the ABI-required minimum alignment of a type in bytes. /// /// This is equivalent to [`mem::align_of`], but also works for some unsized /// types (e.g. slices or rustc's `List`s). /// /// [`mem::align_of`]: std::mem::align_of 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 [`mem::align_of()`], for unsized types it depends on the type, for /// example `[T]` has alignment of `T`. /// /// [`mem::align_of()`]: std::mem::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::(); }