如何将格式化字符串附加到现有字符串?

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

(Playground)

is impossible for this write! call to return an Err,至少从 Rust 1.47 开始,所以 unwrap 不应该引起关注。