fn main() {
let mut str = "string".to_string();
// How do I push String to String?
str.push_str(format!("{}", "new_string"));
}
那么,我如何将格式化后的字符串推送到 str
中?我不想进行连接操作。连接与推送有点相似,但我想知道如何推送 String
。
fn main() {
let mut str = "string".to_string();
// How do I push String to String?
str.push_str(format!("{}", "new_string"));
}
那么,我如何将格式化后的字符串推送到 str
中?我不想进行连接操作。连接与推送有点相似,但我想知道如何推送 String
。
String
,但可以推送字符串切片 - 即&str
。因此,您需要从String
中获取一个切片,有几种方法可以做到这一点:
string.as_str()
方法String
实现了Deref<Target=str>
,编译器会自动将字符串引用(即&String
)转换为字符串切片-&str
。fn main() {
let mut str = "string".to_string();
str.push_str(&format!("{}", "new_string"));
}
str.push_str("new_string")
可以避免不必要的分配和复制。对于更复杂的格式字符串,write!(&mut str, "{}", 42)
也可以避免额外的分配和复制。 - Jmb
str.push_str(&format!("{}", "new_string"));
- Svetlin Zarev&String
怎么允许的? - Axelpush_str()
接受一个&str
而不是String
,因为它必须复制数据,所以消费它接收到的String
不会获得任何好处。如果你有一个拥有所有权的字符串,获取一个引用是微不足道的,如示例所示。 - user4815162342