格式化

我们已经看到,格式化的方式是通过格式字符串来指定的:

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

根据使用的参数类型Xo 还是未指定,同样的变量(foo)能够格式化 成不同的形式。

这个格式化的功能是通过 trait 实现的,每种参数类型都对应一种 trait。最常见的格式 化 trait 就是 Display,它可以处理参数类型为未指定的情况,比如 {}

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

fmt::fmt 文档中可以查看格式化 traits 一览表和它们的参 数类型。

动手试一试

为上面的 Color 结构体实现 fmt::Display,应得到如下的输出结果:

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

如果感到疑惑,可看下面两条提示:

参见:

std::fmt