【发布时间】:2015-04-04 16:43:49
【问题描述】:
使用format!,我可以从格式字符串创建一个String,但是如果我已经有一个我想附加到的String,该怎么办?我想避免分配第二个字符串只是为了复制它并丢弃分配。
let s = "hello ".to_string();
append!(s, "{}", 5); // Doesn't exist
C/C++ 中的近似等价物是snprintf。
【问题讨论】:
使用format!,我可以从格式字符串创建一个String,但是如果我已经有一个我想附加到的String,该怎么办?我想避免分配第二个字符串只是为了复制它并丢弃分配。
let s = "hello ".to_string();
append!(s, "{}", 5); // Doesn't exist
C/C++ 中的近似等价物是snprintf。
【问题讨论】:
我现在看到String implements Write,所以我们可以使用write!:
use std::fmt::Write;
pub fn main() {
let mut a = "hello ".to_string();
write!(a, "{}", 5).unwrap();
println!("{}", a);
assert_eq!("hello 5", a);
}
它 is impossible for this write! call to return an Err,至少从 Rust 1.47 开始,所以 unwrap 不应该引起关注。
【讨论】: