[Rust] 연산자 오버로딩
러스트는 오버로딩은 없는데 연산자 오버로딩은 있다.
그 방법이 c++/c#과는 사뭇 다른데, 연산자에 대해서 미리 정의된 트레잇을 구현하는 것이다.
해당 트레잇들은 std::ops 모듈 내에 선언되어있는데 그중 하나인 Add(+)는 이렇게 되어있다.
pub trait Add<RHS = Self>
{
ㅤtype Output;
ㅤ
ㅤfn add(self, rhs: RHS) -> Self::Output;
}ㅤ
그리고 이걸 사용하려면 이러면 된다.

Output에 반환할 타입을 넣어주고.
rhs의 타입도 self 타입과 같다.
위에 보이듯이 Add가 <RHS=self>로 되어있으므로 따로 제너릭 명시 안해주면 자동으로 구현한 타입과 같아진다.
rhs에 다른걸 넣고싶다면 명시해주면 된다.
이렇게


참고 레퍼런스