Avatar ·

Copie/clonage idiomatique d'un vecteur dans une fonction paramétrée en Rust

Bonjour ! J'ai récemment commencé à apprendre Rust et j'ai rencontré un problème en travaillant avec des vecteurs dans des fonctions génériques. J'ai une fonction qui prend un vecteur et doit retourner une copie de celui-ci avec quelques modifications. Mais je n'arrive pas à comprendre comment copier correctement un vecteur à l'intérieur de la fonction lorsque le type des éléments est générique. Voici un exemple qui ne compile pas : ```rust fn duplicate_vector(vec: Vec) -> Vec { let mut new_vec = vec.clone(); // erreur : T n'implémente pas Clone new_vec.push(/* quelque chose */); new_vec } ``` Le compilateur se plaint que `T` n'implémente pas le trait `Clone`. Je comprends qu'il faut ajouter une contrainte `Clone` pour le type `T`, mais cela semble une solution peu flexible. Et si je veux copier seulement certains éléments ou ne pas exiger `Clone` pour tous les types possibles ? J'ai aussi essayé d'utiliser `vec.to_vec()` et `vec.iter().cloned().collect()`, mais ils nécessitent aussi `Clone`. Existe-t-il un moyen de le faire sans la contrainte `Clone` ? Ou est-ce la seule solution ?