2014-07-17 1 views
2

How can an operator be overloaded for different RHS types and return values?에서 볼 수 있듯이 일부 연산자를 구현할 수 있습니다 (예 : 해결 방법을 사용하여 여러 유형을 추가하십시오.Rust에서 다른 유형의 equals 연산자를 구현할 수 있습니까?

PartialEq 특성에는 비슷한 점이 있습니까?

나는 여러 가지를 시도했지만 한 내가하고, 가짜 특성 푸를 생성 한 후 & 푸에 PartialEq을 구현합니다 (이 특성은 이후 당신이 푸에 그것을 구현할 수 없습니다)하고 얻을 수있는 가장 가까운 :

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

Equiv 특성이이 용도로 사용해야하는 것처럼 보이지만 Equiv 구현은 == 연산자와 아무 관계가 없습니다.

이 방법이 있습니까?

답변

3

== 연산자는 PartialEq 특성을 통해 재정의 할 수 있으며 따라서 일치 유형에서만 사용할 수 있습니다. 평등/동등성의 다른 형식에는 사용자 지정 함수/메서드가 필요하므로 equiv 값이 이론적으로 동일한 해시를 가져야합니다 (그렇지 않으면 HashMap.find_equiv이 예상대로 작동하지 않음). Equiv 특성을 사용할 수 있습니다.

관련 문제