Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 如何为本地特性实现std::ops::Add?_Rust_Traits - Fatal编程技术网

Rust 如何为本地特性实现std::ops::Add?

Rust 如何为本地特性实现std::ops::Add?,rust,traits,Rust,Traits,我有一些对象实现了一个特性: trait X{ fn变换a(&self)->self; fn变换_b(&self)->self; } 我想使用一些形式为obj+Transform::A+Transform::B的语法糖,因此我尝试: enum变换{ A、 B } impl std::ops::Add for T,其中T:X{ 类型输出=T; fn添加(自,右:变换)->T{ 匹配rhs{ Transform::A=>self.Transform_A(), Transform::B=>self.

我有一些对象实现了一个特性:

trait X{
fn变换a(&self)->self;
fn变换_b(&self)->self;
}
我想使用一些形式为
obj+Transform::A+Transform::B
的语法糖,因此我尝试:

enum变换{
A、 B
}
impl std::ops::Add for T,其中T:X{
类型输出=T;
fn添加(自,右:变换)->T{
匹配rhs{
Transform::A=>self.Transform_A(),
Transform::B=>self.Transform_B(),
}
}
}
这不管用。我得到一个错误:

10 | impl<T> std::ops::Add<Transform> for T where T: X {
   |      ^ type parameter `T` must be covered by another type when it appears before the first local type (`Transform`)
   |
   = note: implementing a foreign trait is only possible if at least one of the types for which is it implemented is local, and no uncovered type parameters appear before that first local type
   = note: in this case, 'before' refers to the following order: `impl<..> ForeignTrait<T1, ..., Tn> for T0`, where `T0` is the first and `Tn` is the last
10 | impl std::ops::为T添加,其中T:X{
|^type参数“T”出现在第一个本地类型(`Transform`)之前时,必须由另一个类型覆盖
|
=注意:只有当实现外部特征的类型中至少有一个是本地的,并且在第一个本地类型之前没有出现未覆盖的类型参数时,才可能实现外部特征
=注:在本例中,“before”指以下顺序:`impl ForeignTrait for T0`,其中`T0`是第一个,`Tn`是最后一个
错误似乎表明这是不可能的。如果可能,如何实现这一点


正如通过E0210上的文档向我指出的,,这是不可能的。

文档的解释有什么错?