2015-02-04 3 views
15

Используя format!, я могу создать String из строки формата, но что, если у меня уже есть String, к которому я бы хотел добавить? Я хотел бы избежать выделения второй строки только для ее копирования и выброса выделения.Как добавить отформатированную строку в существующую строку?

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

близкий эквивалент в C/C++ будет snprintf.

ответ

16

теперь я вижу, что StringimplementsWrite, поэтому мы можем просто использовать 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)

Это is impossible for this write! call to return an Err, по крайней мере, ржавчины 1.23, так что unwrap не должно вызывать беспокойство ,

Смежные вопросы