塩焼きブログ

塩焼きに関しての研究内容を公開しています

Rustで`P` cannot be formatted with the default formatterと言われる場合の対応

error[E0277]: `P` doesn't implement `std::fmt::Display`
   --> src/main.rs:263:22
    |
263 |         print!("{}", path);
    |                      ^^^^ `P` cannot be formatted with the default formatter
    |
    = help: the trait `std::fmt::Display` is not implemented for `P`
    = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
    = help: consider adding a `where P: std::fmt::Display` bound
    = note: required by `std::fmt::Display::fmt`

デフォルトフォーマッターではフォーマットができない。Pには実装されていない。{:?}もしくはプリティに出力するなら{:#?}を使う。もしくはPになんかしたら?みたいなことが書いているように見える、多分。この時同時に対象の構造体には#{drive(Debug)]を付与するらしい。

#[derive(Debug)]
struct Hoge {
    num: u32,
    num2: u32,
}