100 Exercises To Learn Rust - 4.3 orphan rule 풀기

struct Ticket {
    title: String,
    description: String,
    status: String,
}

// TODO: `Ticket`에 `PartialEq` 트레이트를 구현하세요.

impl PartialEq for Ticket {
    fn eq(&self, other: &Ticket) -> bool {
        self.title == other.title &&
            self.description == other.description &&
            self.status == other.status

    }
}

 

Ticket은 세 개의 필드를 가진 구조체로 기본 구현만으로는 비교가 불가능하다.

 

각각의 요소마다 서로 비교를 하고, 모든 요소가 동일해야 일치하는 것으로 판단해야 한다.

 

기본 구현에서 ne(not equal, !=)는 eq(==)의 부정(!)으로 정의되어 있기 때문에, PartialEq를 정의한다면 ne를 별도로 정의할 필요는 없다.