format!
的格式类型syntax中的'类型'有什么作用?
其中,那就是:
[[fill]align][sign]['#']['0'][width]['.' precision][type]
其余的似乎都有很好的记录,但是那个特别的人似乎遗漏了一些信息。根据其解释,它说:
type := identifier | ''
但它在地球上的用途是什么?
有人建议将它们用于named parameters,这是合理的假设。但是,如果以下代码不起作用,那么情况如何吗?
println!("{:.2test}", test=32.432);
这给我带来了一个相当令人沮丧的错误:
error: unknown format trait `test` --> src\main.rs:12:29 | 12 | println!("{:.2test}", test=32.432); | ^^^^^^
答案 0 :(得分:3)
这里必须注意的是,上面的语法是format_spec
,它始终跟在冒号之后。
format := '{' [ argument ] [ ':' format_spec ] '}'
format_spec := [[fill]align][sign]['#']['0'][width]['.' precision][type]
考虑到这一点,type
部分用于指定formatting traits,其记录如下:
当请求使用特定类型格式化参数时,实际上是在请求参数归因于特定特征。这允许通过
{:x}
格式化多个实际类型(如i8和isize)。[...]
如果未指定格式(如{}或{:6}),则使用的格式特征是显示特征。
以下是一个示例(Playground):
println!("{:b}", 31); // prints 11111
println!("{:08b}", 31); // prints 00011111
类型格式适用于实现相应格式类型的任何数据类型,例如Binary
或LowerHex
。
起初我猜测它会被命名为参数,但实际上这些参数在冒号之前。只是为了记录,这也有效(Playground):
format!("{a:08b}", a = 31)