#uniform #slice #derive #type #structs #behavior #no-alloc

无std uniform-array-derive

将统一类型转换为切片的 derive 宏

1个不稳定版本

0.1.0 2024年7月3日

#1637过程宏

Download history 459/week @ 2024-06-30 111/week @ 2024-07-07 33/week @ 2024-07-14 24/week @ 2024-07-21 54/week @ 2024-07-28

每月下载量 271
2 crates 中使用

EUPL-1.2

15KB
217

uniform-array-derive

为统一类型的结构体提供类似数组的衍生行为。

Crates.io Docs Build Status Safety Dance MSRV EUPL 1.2 licensed

这将衍生 AsRef<[T]>AsMut<[T]>, Deref<Target = [T]>, DerefMut, Index<Target = T>IndexMutfor 你的同构结构体字段类型 typeT. 由于生成的代码是 unsafe, 它默认在 #[cfg(feature = "unsafe")]` 特性门后面。

#[derive(UniformArray)]
pub struct Vector3 {
    pub x: f32,
    pub y: f32,
    pub z: f32,
}

#[derive(UniformArray)]
pub struct Coordinate(u32, u32);

如果您需要重命名特性门,也可以这样做

/// 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,
}

如果您只需要确保所有字段具有相同的类型,请考虑使用 ensure-uniform-type crate。

依赖项

~0.6–1MB
~24K SLoC