将 a 添加&str
到 a的最有效方法是String
什么?现在我正在分配一个新的String
并推动它:
fn push_front(s: String, prefix: &str) -> String {
let prefix = prefix.to_owned();
prefix.push_str(&s);
prefix
}
Run Code Online (Sandbox Code Playgroud)
有没有更有效的方法?我String::push_front
在标准库中没有看到函数。
您可以使用String::insert_str
:
s.insert_str(0, prefix);
Run Code Online (Sandbox Code Playgroud)
不是为推送分配新的String
和(潜在的)分配,而是insert_str
在底层向量中保留容量并将 的元素s
向右移动。如果String
已经有足够的容量prefix
,则完全避免分配。这意味着它最多只需要一个分配,而不是两个。