是否可以在Rust中为不同类型实现equals运算符?

时间:2014-07-17 07:32:07

标签: rust

How can an operator be overloaded for different RHS types and return values?所示,您可以实现一些运算符,例如。使用解决方法添加多种类型。

PartialEq特性是否可能类似?

我尝试了各种各样的东西,但我能得到的最接近的是创建一个假的特性Foo,在& Foo上实现PartialEq(因为它是一个你不能在Foo上实现它的特性)然后做:

let x:Bar = ...
let y:FooBar = ...
if &x as &Foo == &y as &Foo {
  ...
}

Equiv trait看起来应该用于此,但据我所知,实现Equiv与==运算符没有任何关系。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:3)

==运算符只能通过PartialEq特征覆盖,因此可用于匹配类型。任何其他形式的相等/等价需要自定义函数/方法,您可以使用Equiv特征,尽管理论上equiv的值也应该具有相同的哈希值(或者HashMap.find_equiv不会像你期望的那样工作。