如何为一般的右手操作数重载操作符?

时间:2018-02-18 19:47:16

标签: generics rust operator-overloading traits

我有一个泛型类型Vec2<T>,我想为此实现以下操作:

Vec2<T> = T * Vec2<T>

我试过这个:

impl<T: Copy + Mul<Output = T>> Mul<Vec2<T>> for T {
    type Output = Vec2<T>;

    fn mul(self, rhs: Vec2<T>) -> Vec2<T> {
        Vec2 {
            x: self * rhs.x,
            y: self * rhs.y,
        }
    }
}

但是我收到了这个错误:

  

类型参数T必须用作某些本地的类型参数   类型(例如MyStruct<T>);只有当前包中定义的特征   可以为类型参数

实现

使用您自己的类型作为右侧操作数重载运算符的标准方法是什么?

[编辑]

显然答案是你目前无法做到这一点。在&#34;重复&#34;中有相关问题的一些答案。我等待语言的更新,以便重新打开这个问题,并且可以给出实际答案。

0 个答案:

没有答案