如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与==运算符没有任何关系。
有办法做到这一点吗?
答案 0 :(得分:3)
==
运算符只能通过PartialEq
特征覆盖,因此可用于匹配类型。任何其他形式的相等/等价需要自定义函数/方法,您可以使用Equiv
特征,尽管理论上equiv
的值也应该具有相同的哈希值(或者HashMap.find_equiv
不会像你期望的那样工作。