格式化类型语法中的类型是什么?

时间:2017-01-06 00:17:41

标签: formatting rust

format!的格式类型syntax中的'类型'有什么作用?

其中,那就是:

  

[[fill]align][sign]['#']['0'][width]['.' precision][type]

其余的似乎都有很好的记录,但是那个特别的人似乎遗漏了一些信息。根据其解释,它说:

  

type := identifier | ''

但它在地球上的用途是什么?

编辑

1。

有人建议将它们用于named parameters,这是合理的假设。但是,如果以下代码不起作用,那么情况如何吗?

println!("{:.2test}", test=32.432);

这给我带来了一个相当令人沮丧的错误:

error: unknown format trait `test`
  --> src\main.rs:12:29
   |
12 |    println!("{:.2test}", test=32.432);
   |                               ^^^^^^

1 个答案:

答案 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

类型格式适用于实现相应格式类型的任何数据类型,例如BinaryLowerHex

起初我猜测它会被命名为参数,但实际上这些参数在冒号之前。只是为了记录,这也有效(Playground):

format!("{a:08b}", a = 31)