use core::ops;
pub trait Alignment {}
#[repr(align(4))]
pub struct A4;
impl Alignment for A4 {}
#[repr(C)]
pub struct Aligned<A, T>
where
T: ?Sized,
{
_alignment: [A; 0],
value: T,
}
#[allow(non_snake_case)]
pub const fn Aligned<A, T>(value: T) -> Aligned<A, T> {
Aligned {
_alignment: [],
value,
}
}
impl<A, T> ops::Deref for Aligned<A, T>
where
A: Alignment,
T: ?Sized,
{
type Target = T;
fn deref(&self) -> &T {
&self.value
}
}
impl<A, T> ops::DerefMut for Aligned<A, T>
where
A: Alignment,
T: ?Sized,
{
fn deref_mut(&mut self) -> &mut T {
&mut self.value
}
}