将`&str`添加到`String`的最有效方法是什么?

将 a 添加&str到 a的最有效方法是String什么?现在我正在分配一个新的String并推动它:

fn push_front(s: String, prefix: &str) -> String {
  let prefix = prefix.to_owned();
  prefix.push_str(&s);
  prefix
}

有没有更有效的方法?我String::push_front在标准库中没有看到函数。

回答

您可以使用String::insert_str

s.insert_str(0, prefix);

不是为推送分配新的String (潜在的)分配,而是insert_str在底层向量中保留容量并将 的元素s向右移动。如果String已经有足够的容量prefix,则完全避免分配。这意味着它最多只需要一个分配,而不是两个。


以上是将`&str`添加到`String`的最有效方法是什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>