新的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);
}