我有一个格式化字符串,由多个条件组成。我正在寻找一种解决方案,不需要为中间步骤分配多个字符串。如果我使用
我尝试使用宏来生成复杂的格式字符串和其参数,但是这总是导致“此语句结束时临时值被释放”的错误。我尝试使用类型为
在高层次上,我想要像这样的东西:
这是否可能在没有或仅有一个单一分配的情况下实现?
format!
宏创建最终格式字符串的每个单独组件,则可以工作,但我需要为每个组件分配空间。我尝试使用宏来生成复杂的格式字符串和其参数,但是这总是导致“此语句结束时临时值被释放”的错误。我尝试使用类型为
impl core::fmt::Write
的单个缓冲区,但也无法成功。在高层次上,我想要像这样的东西:
fn main() {
let prefix_include_a = true;
let prefix_include_b = true;
// prefix itself is a formatted string and it is further formatted here
println!("{prefix:<10}{message:>10}!",
prefix = format_prefix(prefix_include_a, prefix_include_b),
message = "message"
);
}
// formats the prefix component of the final string.
// needs multiple String allocations as `format!` is used
fn format_prefix(inc_a: bool, inc_b: bool) -> String {
format!("[{a:<5}{b:<5}]",
a = if inc_a {
format!("{:.1}", 1.234)
} else {
format!("")
},
b = if inc_b {
format!("{:.2}", 1.234)
} else {
format!("")
},
)
}
这是否可能在没有或仅有一个单一分配的情况下实现?