더북(TheBook)

일단 에러를 수정한 다음 처음에 에러가 발생한 이유를 알아보기로 하자. 다음과 같이 Eq, Hashderive 매크로에 추가한다.

코드 4-5 derive 매크로에 비교 트레이트 구현하기

#[derive(Serialize, Debug, Clone, Eq, Hash)]
struct QuestionId(String);
...

그러나 러스트 컴파일러는 여전히 에러를 낸다. 두 트레이트를 추가하면 새로운 에러 메시지가 나온다.

error[E0277]: can't compare `QuestionId` with `QuestionId`
    --> src/main.rs:14:35
    |
14  | #[derive(Serialize, Debug, Clone, Eq, Hash)]
    |                                   ^^ no implementation
                                        for `QuestionId == QuestionId`
    |
    ::: /Users/bgruber/.rustup/toolchains/
        stable-x86_64-apple-darwin/lib/rustlib/src/
        rust/library/core/src/cmp.rs:264:15
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.