출력 구현체가 존재하지 않는 타입에는 std::fmt 포맷팅 트레잇을
사용할 수 없습니다. 러스트가 자동으로 구현체를 제공하는 타입은
std 라이브러리 내 타입뿐입니다. 그 외에는 전부 어떤 형태로건
직접 구현해야 합니다.
이 문제는 fmt::Debug 트레잇으로 쉽게 해결할 수 있습니다.
모든 타입은 fmt::Debug 트레잇을 derive 하여 구현체를 자동으로 생성할 수 있습니다.
이는 fmt::Display 트레잇에는 해당되지 않습니다. fmt::Display 트레잇은 반드시 직접 구현해야합니다.
#![allow(unused)]fnmain() {
// 이 구조체는 `fmt::Display`로 출력할 수 없으며,// `fmt::Debug`로도 출력할 수 없습니다.structUnPrintable(i32);
// 다음 `derive` 속성은 이 구조체가 `fmt::Debug`로 출력될 수 있도록// 구현체를 자동으로 생성합니다.#[derive(Debug)]structDebugPrintable(i32);
}