如何在Rust中将字符串推入字符串?

5
fn main() {
    let mut str = "string".to_string();

    // How do I push String to String?
    str.push_str(format!("{}", "new_string"));
}

那么,我如何将格式化后的字符串推送到 str 中?我不想进行连接操作。连接与推送有点相似,但我想知道如何推送 String


str.push_str(&format!("{}", "new_string")); - Svetlin Zarev
@SvetlinZarev 谢谢,可以用。但是 &String 怎么允许的? - Axel
我会写一个恰当的答案 :) - Svetlin Zarev
@SvetlinZarev 非常感谢,那就太好了。 - Axel
1
如果不明显,push_str() 接受一个 &str 而不是 String,因为它必须复制数据,所以消费它接收到的 String 不会获得任何好处。如果你有一个拥有所有权的字符串,获取一个引用是微不足道的,如示例所示。 - user4815162342
1个回答

8
您无法直接推送String,但可以推送字符串切片 - 即&str。因此,您需要从String中获取一个切片,有几种方法可以做到这一点: 因此,只需获得格式化字符串的引用即可将其推送:
fn main() {
  let mut str = "string".to_string();
  str.push_str(&format!("{}", "new_string"));
}

3
请注意,在这种特定情况下,str.push_str("new_string") 可以避免不必要的分配和复制。对于更复杂的格式字符串,write!(&mut str, "{}", 42)也可以避免额外的分配和复制。 - Jmb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接