더북(TheBook)

러스트 문서에 있는 코드 예제(코드 2-15)에서 자신의 타입으로 어떻게 구현할지 찬찬히 알아낼 수 있다. 코드 예제를 복사하고 예제 구조체(이 경우 Position)를 Question으로 대체한다. 다음은 QuestionDisplay 트레이트 구현 코드이며, 변경 사항은 음영으로 표시하였다.

impl std::fmt::Display for Question {
    fn fmt(&self, f: &mut std::fmt::Formatter) -> Result<(), std::fmt::Error> {
        write!(
            f,
            "{}, title: {}, content: {}, tags: {:?}",
            self.id, self.title, self.content, self.tags
        )
    }
}

println! 매크로로 질문을 출력하면 위에 구현한 fmt 함수를 호출한다. fmt 함수는 콘솔에 텍스트를 출력하는 write! 매크로를 호출하며, 여기에 출력할 내용을 정의한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.