想要使用std::fmt格式化traints的所有类型都需要可打印(printable)的实现。
自动实现仅提供给诸如std库里的类型。其他类型则必须想办法手工实现。
fmt::Debug trait 使用起来非常简单。所有 类型都可以
derive (自动创建) fmt::Debug 的实现. fmt::Display并非一定要手工实现。
// 该结构体不能被`fmt::Display`和 `fmt::Debug`打印
struct UnPrintable(i32);
// `derive`属性会用`fmt::Debug`为该`结构体`自动创建必须的可打印实现。
#[derive(Debug)]
struct DebugPrintable(i32);
std标准库类型使用{:?}也可以自动实现可打印:
所以fmt::Debug 肯定可以实现可打印,但是会失去一些优雅。手工实现fmt::Display 会解决这个问题。
attributes, derive, std::fmt,
以及 struct