在 C++ 中,要将向量的内容复制到另一个向量,我们使用赋值运算符dest = src。但是,在 Rustsrc中将被移入dest并且不再可用。
我知道最简单的答案是做dest = src.clone()(对于这个问题,我们会承担的缘故T中Vec<T>是Clone)。但是 - 如果我理解正确的话 - 这会创建一个全新的第三向量,其中复制了 的内容src并将其移动到 中dest,丢弃了dest动态分配的数组。如果这是正确的,当我们可以直接将内容复制到dest(假设它有足够的容量)时,这是完全不必要的动态分配。
下面是我制作的一个函数,它完全符合我的意愿:清空dest向量并将 的元素复制src到其中。
// copy contents of src to dest without just cloning src
fn copy_content<T: Clone>(dest: &mut Vec<T>, src: &Vec<T>) {
dest.clear();
if dest.capacity() < src.len() {
dest.reserve(src.len());
}
for x in src {
dest.push(x.clone());
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用内置或标准库实用程序来做到这一点?dest …