在Rust参数化函数中惯用地复制/克隆向量
你好!我最近开始学习Rust,在处理泛型函数中的向量时遇到了问题。我有一个函数,它接收一个向量并应返回其副本并做一些修改。但我不知道当元素类型是泛型时如何正确地在函数内部复制向量。
这是一个无法编译的例子:
```rust
fn duplicate_vector(vec: Vec) -> Vec {
let mut new_vec = vec.clone(); // 错误:T没有实现Clone
new_vec.push(/* 某物 */);
new_vec
}
```
编译器报错说`T`没有实现`Clone` trait。我知道需要为类型`T`添加`Clone`约束,但这似乎不够灵活。如果我只想复制某些元素,或者根本不想要求所有可能的类型都实现`Clone`呢?
我还尝试过使用`vec.to_vec()`和`vec.iter().cloned().collect()`,但它们也需要`Clone`。有没有办法在不添加`Clone`约束的情况下做到这一点?还是这是唯一的方法?