코드 4-23 Error 열거 타입에 Display 트레이트 추가하기
...
impl std::fmt::Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
match *self {
Error::ParseError(ref err) => {
write!(f, "Cannot parse parameter: {}", err)
}
Error::MissingParameters => write!(f, "Missing parameter"),
}
}
}
...
표준 라이브러리의 트레이트를 구현하는 방법은 러스트 문서에 잘 정리되어 있다(https://doc.rust-lang.org/std/fmt/trait.Display.html). 앞 예제에서 우리가 만든 타입인 self와 표준 라이브러리의 Formatter를 인수로 사용한다. 그런 다음 서로 다른 열거 타입에 대한 패턴 매칭을 통해서 읽을 수 있는 에러 값이 들어올 때마다 write! 매크로를 통해 컴파일러에 무엇을 출력할지 알려준다.