在Rust中定义结构体(struct)或枚举(enum)类型时,可以在定义前加上属性#[derive(Debug)]。这样可以让编译器为该类型自动派生(derive)出std::fmt::Debug trait的实现。然后在打印时使用{:?}则可以打印出变量类型的数据表示。
注意的是,如果你希望用{}打印结构体或者枚举变量,你还是需要为其实现std::fmt::Display trait。
另外,如果你的结构体中还包含了别的结构体,你可能还是需要自己实现std::fmt::Debug trait来达到自己希望的打印效果。例如在下例(Rust Playground传送门)中,Deep(Structure(7))会打印出Deep(Structure(7)),而Flat(Structure(7))则会通过自定义的实现打出Structure(7)。
|
|