How can I append a formatted string to an existing

2020-01-27 07:17发布

Using format!, I can create a String from a format string, but what if I already have a String that I'd like to append to? I would like to avoid allocating the second string just to copy it and throw away the allocation.

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

A close equivalent in C/C++ would be snprintf.

1条回答
戒情不戒烟
2楼-- · 2020-01-27 08:16

I see now that String implements Write, so we can just use 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);
}

(Playground)

It is impossible for this write! call to return an Err, at least as of Rust 1.23, so the unwrap should not cause concern.

查看更多
登录 后发表回答