フォーマット

これまで、文字列がどのようにフォーマットされるかは フォーマット文字列 によって決まるということを見てきました 。

  • format!("{}", foo) -> "3735928559"
  • format!("0x{:X}", foo) -> "0xDEADBEEF" "0xDEADBEEF"
  • format!("0o{:o}", foo) -> "0o33653337357"

ここでは(foo)という単一の変数がXo指定なし 、という様々な 引数タイプ (argument type)に応じてフォーマットされています。

フォーマットの機能はそれぞれの引数タイプごとに個別のトレイトを用いて実装されています。 最も一般的なトレイトはDisplayで、これは引数タイプが未指定(たとえば{})の時に呼び出されます。

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

フォーマット用トレイトの全リスト、及び引数の型はこちらから、引数の型についてはstd::fmtのドキュメンテーションから参照できます。

演習

上にあるソースコード中のColorという構造体のためのfmt::Displayトレイトの実装を追加しましょう。アウトプットは以下のように表示されるはずです。

RGB (128, 255, 90) 0x80FF5A RGB (0, 3, 254) 0x0003FE RGB (0, 0, 0) 0x000000

詰まったら以下の2つがヒントになります。

参照

std::fmt