rust 匹配两个不匹配类型的Eq和PartialEq相等

yvt65v4c  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(138)

我尝试为两种不同的类型实现PartialEq,在某种程度上,枚举A的一个成员等于枚举B的一个成员。

impl PartialEq for A {
    fn eq(&self, other: &B) -> bool {
        match (self, other) {
            ...
        }
    }
}

但是,我得到了错误:

change the parameter type to match the trait: `&EventType`

我怎样才能做到这一点呢?有没有可能像python __eq__那样重载来匹配任意两个随机类型?

fkaflof6

fkaflof61#

您可以实现与另一个Rhs的比较,但必须显式提供该类型参数:

impl PartialEq<B> for A {
    fn eq(&self, other: &B) -> bool {
        match (self, other) {
            //…
        }
    }
}

或者使用it's definiton中的默认值Self

pub trait PartialEq<Rhs = Self>
// …

相关问题