gpt4 book ai didi

rust - 是否可以在 Rust 中为不同类型实现等号运算符?

转载 作者:行者123 更新时间:2023-11-29 08:00:06 26 4
gpt4 key购买 nike

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 特性看起来应该用于此目的,但据我所知,实现 Equiv 与 == 运算符没有任何关系。

有没有办法做到这一点?

最佳答案

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

关于rust - 是否可以在 Rust 中为不同类型实现等号运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24797448/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com