Debug 트레이트는 derive 매크로로 파생되며, 여러분이 만든 구조체 위에 놓는다. 이렇게 하면 별도의 트레이트를 구현할 필요 없이 해당 데이터 구조를 출력할 수 있다.
#[derive(Debug)] struct Question { title: String, ... }
#을 추가하여 좀 더 예쁘게 출력할 수도 있다. println!("{:#?}", question) 이렇게 하면 긴 문자열 하나 대신 여러 줄로 데이터 구조를 출력해 준다.
앞에서 본 ToString 트레이트와 마찬가지로, Display 트레이트는 라이브러리의 모든 기본 타입에 구현된 표준 러스트 트레이트이다. Display를 이용해서 컴파일러는 데이터 타입을 사람이 읽을 수 있도록 변환하여 출력한다. 사용자 정의 타입은 표준 라이브러리의 일부가 아니므로 이 트레이트를 구현하지 않는다.
트레이트를 직접 구현하는 방법을 어떻게 찾을 수 있을까? 대답은 또 러스트 문서에 있다. Display(http://mng.bz/G1wq)를 찾아 오른쪽 상단의 [source]를 클릭하면 구현을 찾을 수 있다. 주석 부분에서 구현된 예가 있다.