如何使 std::format 中的填充填充动态化?

Dom*_*nik 8 rust

要创建格式输出并填充输出,n您可以在 Rust 中执行以下操作:

\n
fn main() {\n    let title = " Title ";\n    println!("\xe2\x94\x8c{:\xe2\x94\x80^11}\xe2\x94\x90", title);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这将打印:

\n
\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80 Title \xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n
Run Code Online (Sandbox Code Playgroud)\n

因此,str 的^两侧都被填充(通过 居中),且-间距不超过 11 个字符。

\n

我怎样才能使这个宽度动态化呢?通过变量。

\n

Dom*_*nik 8

事实证明这是一个内置功能。std::format带有一个width用后缀表示的选项$

\n
fn main() {\n    let title = " Title ";\n    println!("\xe2\x94\x8c{:\xe2\x94\x80^width$}\xe2\x94\x90", title, width = 11);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这将打印:

\n
\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80 Title \xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n
Run Code Online (Sandbox Code Playgroud)\n

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=5666cd7f274d436e2216e7ecd0320072

\n

  • 它实际上并不是一个“宽度选项”,而是对于某些字段(目前只有宽度和精度),格式迷你语言接受参数,并且它们以“$”为后缀:https://play.rust-lang.org /?版本=稳定&模式=调试&版本=2018&要点=eb85db082d3cce3fc62a5ae3d8d15577。 (2认同)