可以在Rust中的同构结构/元组的所有成员上运行吗?

ideaman42

我有一个带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矢量的方式?

例如: struct float2(f64, f64, f64);

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

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

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

谢泼玛特

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

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

进一步阅读:

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

自动转换结构的所有成员

是否可以使用反射从Java类中检索所有成员,包括私有成员?

元组的实例在枚举类中没有成员(pylint没有成员)

编写查询以返回层次结构的所有成员

是否可以在 Rust 中将元组定义为结构的成员?

是否有一种简单的方法可以删除角色中的所有成员

代码返回所有成员,而不是角色中的成员

无法看到 Object 中的所有成员(但使用 `OfType` 我可以访问)

在群集的Liferay设置中,所有模块都在所有节点上运行吗?

在Phpbb上的User_Notify通知所有成员

统计服务器上的所有成员消息

paintComponent方法内的所有内容都可以在EDT上运行吗?

Windows 8.1的所有驱动程序都可以在Windows 10上运行吗?

Arduino引导加载程序可以在所有AVR上运行吗?

C可执行文件可以在所有操作系统上运行吗?

Scala运行时反射甚至可以为内部类获取特定类型的所有成员

导出的类中可以有私有成员吗?

有没有一种方法可以对类中的所有成员使用`std :: optional`

强制处理类中的所有成员变量

从所有成员中删除自己作为代表

从Discord中的特定渠道检索所有成员

在Prolog中显示数据库的所有成员

为什么甚至可以更改私有成员或使用反射在C#中运行私有方法?

如何检查两个元组的所有成员是否都不相同?

是否可以使用列表推导从字典中创建所有成员字典键的列表?

static_cast 到结构类型以访问其所有成员变量

指向层次结构中所有成员的一般方法

在堆上创建结构数组,并为所有成员分配内存

NTTP 的结构类型:为什么所有成员都必须是公共的?