Cópia/Clonagem idiomática de um vetor em uma função parametrizada em Rust
Olá! Recentemente comecei a estudar Rust e me deparei com um problema ao trabalhar com vetores em funções genéricas. Tenho uma função que recebe um vetor e deve retornar uma cópia dele com algumas alterações. Mas não consigo entender como copiar corretamente o vetor dentro da função quando o tipo do elemento é genérico.
Aqui está um exemplo que não compila:
```rust
fn duplicate_vector(vec: Vec) -> Vec {
let mut new_vec = vec.clone(); // erro: T não implementa Clone
new_vec.push(/* algo */);
new_vec
}
```
O compilador reclama que `T` não implementa a trait `Clone`. Eu entendo que preciso adicionar a restrição `Clone` para o tipo `T`, mas isso parece uma solução inflexível. E se eu quiser copiar apenas certos elementos ou não quiser exigir `Clone` para todos os tipos possíveis?
Também tentei usar `vec.to_vec()` e `vec.iter().cloned().collect()`, mas eles também exigem `Clone`. Existe alguma maneira de fazer isso sem a restrição `Clone`? Ou essa é a única
No answers yet.
Faça login para deixar uma resposta