在结构中创建安全的重叠/联合字段

问题描述

在C ++中,我可以创建如下结构:

union Vector4
{
    struct { float x,y,z,w; };
    float data[4];
};

因此我可以轻松地以字段或连续数组的形式访问数据。另外,我可以只创建一个指向第一个字段x的指针,并从该指针作为连续数组读取。

我知道有枚举,但是我无法支付额外的开销。我也知道我可以在Rust中创建并集,但是它们要求我在访问它们的任何地方用unsafe填充我的代码。我认为我不必这样做,因为代码并非不安全,因为基础数据始终表示为浮点数(并且我需要C布局#[repr(C)],以便编译器不会抛出字段顺序)。

我将如何在Rust中实现此功能,以便我可以按名称访问字段,还可以轻松安全地访问整个结构的连续内存?如果这不可能,是否有办法让我可以安全地获取结构的一部分?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)