Rust格式化字符串:如何自定义居中填充的短横线数量?
问题解决:Rust中用变量控制格式化字符串的居中宽度
在Rust的格式化语法里,你尝试的{:-^{margin}}写法不符合规范,导致编译失败。要实现用变量控制短横线填充的总宽度,有两种直接的解决方式:
方式一:使用位置参数
通过位置索引引用变量,在格式说明符里用数字$指定宽度:
let margin: usize = 15; println!("{:-^1$}", "Hi :(", margin);
这里的1$表示引用第二个参数(索引从0开始,第一个参数是"Hi :(",第二个是margin)。
方式二:使用命名参数
给宽度参数指定名称,在格式说明符里用名称$引用:
let margin: usize = 15; println!("{:-^width$}", "Hi :(", width = margin);
这种写法可读性更强,适合参数较多的场景。
原理说明
Rust的println!等格式化宏中,格式说明符(即:后面的部分)内部的宽度/精度参数,必须通过$语法引用外部传递的参数,而不能直接写变量名。你之前的写法混淆了格式化占位符的命名参数语法(外部的{margin})和格式说明符内部的参数引用规则,所以无法编译。
内容的提问来源于stack exchange,提问作者João Pedro
相关产品推荐
相关产品推荐

