Struct 是否可以在Rust中对同构结构/元组的所有成员进行操作?

Struct 是否可以在Rust中对同构结构/元组的所有成员进行操作?,struct,rust,tuples,Struct,Rust,Tuples,我有一个带有add运算符的向量: use std::ops::Add; struct float2(f64, f64); impl Add for float2 { type Output = float2; fn add(self, _rhs: float2) -> float2 { float2(self.0 + _rhs.0, self.1 + _rhs.1) } } 有没有可能这样写,它将在3D或4D矢量

我有一个带有
add
运算符的向量:

use std::ops::Add;

struct float2(f64, f64);

impl Add for float2 {
    type Output = float2;

    fn add(self, _rhs: float2) -> float2 {
        float2(self.0 + _rhs.0,
               self.1 + _rhs.1)
    }
}
有没有可能这样写,它将在3D或4D矢量工作的方式呢

e、 g.:
struct float2(f64、f64、f64)

我设法添加了一个
Index
操作符和一个
len
方法,为每种类型返回一个静态值,但这感觉有点麻烦。我没有检查程序集,但它可能检查了所有索引访问,这对于这样一个低级操作来说似乎是不必要的

我也可以打包结构并使用直接的不安全内存访问,但这似乎也不是很理想


有没有更方便的方法来编写处理结构的所有元素的表达式?

不,这是不可能的。可能的情况是编写能够编写所需代码的代码。这就是所谓的元编程。在Rust中,元编程有两种主要途径:构建脚本和宏。编译器插件也存在,但要复杂得多

Rust标准库使用宏来实现数组和元组从0到32的特征,因此它肯定是一种公认的模式。您应该先写出几个例子,看看每个迭代是如何不同的,然后从中提取一个宏

进一步阅读: