Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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中的不同类型执行equals运算符?_Rust - Fatal编程技术网

是否可以对Rust中的不同类型执行equals运算符?

是否可以对Rust中的不同类型执行equals运算符?,rust,Rust,如中所示,您可以实现一些运算符,例如使用变通方法添加多个类型 PartialEq特质是否也可能存在类似的情况 我尝试过各种方法,但最接近的方法是创建一个伪trait Foo,在&Foo上实现PartialEq(因为这是一个不能在Foo上实现的特性),然后执行: let x:Bar = ... let y:FooBar = ... if &x as &Foo == &y as &Foo { ... } Equiv特性看起来应该用于此目的,但据我所知,实现Equ

如中所示,您可以实现一些运算符,例如使用变通方法添加多个类型

PartialEq特质是否也可能存在类似的情况

我尝试过各种方法,但最接近的方法是创建一个伪trait Foo,在&Foo上实现PartialEq(因为这是一个不能在Foo上实现的特性),然后执行:

let x:Bar = ...
let y:FooBar = ...
if &x as &Foo == &y as &Foo {
  ...
}
Equiv特性看起来应该用于此目的,但据我所知,实现Equiv与==运算符没有任何关系


有办法做到这一点吗

只能通过
PartialEq
特性覆盖
=
运算符,因此可用于匹配类型。任何其他形式的相等/等价都需要自定义函数/方法,您可以使用
Equiv
特性,尽管
Equiv
相等的值在理论上也应该具有相同的散列(否则将无法按预期工作)