如何将格式化字符串附加到现有字符串?
How can I append a formatted string to an existing String?
使用 format!
,我可以从格式字符串创建一个 String
,但是如果我已经有一个我想追加的 String
怎么办?我想避免分配第二个字符串只是为了复制它并丢弃分配。
let s = "hello ".to_string();
append!(s, "{}", 5); // Doesn't exist
C/C++ 中的近似等价物是 snprintf
。
我现在看到 String
implements Write
, so we can use 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
不应该引起关注。
使用 format!
,我可以从格式字符串创建一个 String
,但是如果我已经有一个我想追加的 String
怎么办?我想避免分配第二个字符串只是为了复制它并丢弃分配。
let s = "hello ".to_string();
append!(s, "{}", 5); // Doesn't exist
C/C++ 中的近似等价物是 snprintf
。
我现在看到 String
implements Write
, so we can use 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
不应该引起关注。