Derive array-like behavior for your structs of uniform types.
EUPL-1.2 License
Derive array-like behavior for your structs of uniform types.
This will derive AsRef<[T]>
, AsMut<[T]>
, Deref<Target = [T]>
, DerefMut
, Index<Target = T>
and IndexMut
for your homogeneous structs field type T
. Since the generated code is unsafe
, it is feature gated behind a
#[cfg(feature = "unsafe")]
by default.
#[derive(UniformArray)]
pub struct Vector3 {
pub x: f32,
pub y: f32,
pub z: f32,
}
#[derive(UniformArray)]
pub struct Coordinate(u32, u32);
If you need to rename the feature gate, you can do that as well:
/// Use a custom feature gate instead of "unsafe".
#[derive(UniformArray)]
#[uniform_array(safety_gate = "super_unsafe")]
pub struct Quaternion<T>
where
T: Sized,
{
pub a: T,
pub b: T,
pub c: T,
pub d: T,
}
If you only need to ensure that all your fields have the same type, consider the ensure-uniform-type crate instead.