2進数の format

format!("{:b}", 5) // 101
format!("{:08b}", 5); // 00000101

fromat!("{:#b}", 5); // 0b101 (0b は2進数であることを表す)
format!("{:#08b}", 5); // 0b000101

08 は「0埋めをして8桁以上にして出力する」ということを表す

16進数にしたい場合は b の代わりに x を使う。

Display と Debug の違い

Debug の実装には #[derive(Debug)] を使うことが推奨されている。

名前付き引数

Rust には名前付き引数はないが、format! マクロでは名前付き引数が使える

format!("{argument}", argument = "test");   // => "test"
format!("{name} {}", 1, name = 2);          // => "2 1"
format!("{a} {c} {b}", a="a", b='b', c=3);  // => "a 3 b"

引数で名前を指定していない場合は、スコープにある変数名を見る。

let argument = 2 + 2;
format!("{argument}");   // => "4"

fn make_string(a: u32, b: &str) -> String {
    format!("{b} {a}")
}
make_string(927, "label"); // => "label 927"