use bytemuck::{NoUninit, Pod, Zeroable};
use crate::{Affine, Alignment, Length, Mask, Matrix, Quaternion, Scalar, SupportedLength, Vector};
unsafe impl<const N: usize, T, A: Alignment> Pod for Vector<N, T, A>
where
Length<N>: SupportedLength,
T: Scalar + Pod,
{
}
unsafe impl<const N: usize, T, A: Alignment> Zeroable for Vector<N, T, A>
where
Length<N>: SupportedLength,
T: Scalar + Zeroable,
{
}
unsafe impl<const N: usize, T, A: Alignment> Pod for Matrix<N, T, A>
where
Length<N>: SupportedLength,
T: Scalar + Pod,
{
}
unsafe impl<const N: usize, T, A: Alignment> Zeroable for Matrix<N, T, A>
where
Length<N>: SupportedLength,
T: Scalar + Zeroable,
{
}
unsafe impl<T, A: Alignment> Pod for Quaternion<T, A> where T: Scalar + Pod {}
unsafe impl<T, A: Alignment> Zeroable for Quaternion<T, A> where T: Scalar + Zeroable {}
unsafe impl<const N: usize, T, A: Alignment> Pod for Affine<N, T, A>
where
Length<N>: SupportedLength,
T: Scalar + Pod,
{
}
unsafe impl<const N: usize, T, A: Alignment> Zeroable for Affine<N, T, A>
where
Length<N>: SupportedLength,
T: Scalar + Zeroable,
{
}
unsafe impl<const N: usize, T, A: Alignment> NoUninit for Mask<N, T, A>
where
Length<N>: SupportedLength,
T: Scalar + 'static,
{
}
unsafe impl<const N: usize, T, A: Alignment> Zeroable for Mask<N, T, A>
where
Length<N>: SupportedLength,
T: Scalar,
{
}