使用字符串变量作为控制台输出的模板



新的rustacean在这里!

我很难使用带有占位符的字符串变量作为println!write!的模板。这可能吗?

的例子:

假设我想以以下格式打印数字:~~## 10 ~~##

我的工作:

pub fn print_numbers(n1: u8, n2: u8, n3: u8) {
println!("~~## {} ~~##", n1);
println!("~~## {} ~~##", n2);
println!("~~## {} ~~##", n3);
}

我想做的是:

pub fn print_numbers(n1: u8, n2: u8, n3: u8) {
let template = "~~## {} ~~##";
println!(template, n1);
println!(template, n2);
println!(template, n3);
}

编译器只建议我应该使用像"{}"这样的字符串字面值。我如何创建这样的可重用字符串模板?

感谢

我不认为这是可能的,因为格式参数需要是字符串字面值。一个变通的解决方案是定义一个闭包,并在需要时调用它。

pub fn print_numbers(n1: u8, n2: u8, n3: u8) {
let render_custom_template = |num| println!("~~## {} ~~##", num);
render_custom_template(n1);
render_custom_template(n2);
render_custom_template(n3);
}