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

She*_*ter 22 string-formatting rust

使用format!,我可以创建一个String格式字符串,但如果我已经有一个String我想要附加的内容呢?我想避免分配第二个字符串只是为了复制它并丢弃分配.

let s = "hello ".to_string();
append!(s, "{}", 5); // Doesn't exist
Run Code Online (Sandbox Code Playgroud)

与C/C++相当的近似值snprintf.

She*_*ter 27

我现在看到了这个String 实现 Write,所以我们可以使用write!:

use std::fmt::Write;

pub fn main() {
    let mut a = "hello ".to_string();
    write!(&mut a, "{}", 5).unwrap();

    println!("{}", a);
    assert_eq!("hello 5", a);
}
Run Code Online (Sandbox Code Playgroud)

(游乐场)

是不可能出现这种write!调用返回的Err,至少作为防锈1.23,所以unwrap不应该引起关注.