그러면 Display 트레이트 구현(http://mng.bz/O6wn)에서 fmt 메서드가 호출된다. 이 에러 메시지에서는 일반적인 중괄호 {} 대신 {:?}를 사용할 것을 제안했다. 다음 ‘Display 대 Debug’에서 차이점을 알아보자.
Display 대 Debug
Display 트레이트는 러스트의 모든 기본 타입(http://mng.bz/YKZN)에 구현된다. 이 트레이트는 사람이 읽을 수 있는 형식으로 데이터를 표시하는 구현이 제공되도록 해당 타입을 설정한다. 숫자와 문자열이라면 간단하지만 벡터라면 조금 복잡해진다. Vec<T>는 데이터 타입의 일반적인 컨테이너이기 때문에 벡터 안에는 무엇이든 들어갈 수 있다. 이러한 상황(벡터와 같은 복잡한 데이터 구조)에서 러스트 표준 라이브러리는 Debug 트레이트를 사용한다.
둘 중 하나를 사용할 때 개발자에게 있어 Display와 Debug의 차이점은 다음과 같다. 문자열과 숫자를 처리할 때는 중괄호({})를 쓴다(예를 들어 println!("{}", 3)). 구조체 또는 JSON 값과 같은 더 복잡한 데이터 구조를 처리할 때는 {:?}를 사용할 수도 있으며, 이때는 Debug 트레이트를 호출한다(예를 들어 println!("{:?}", question)).