Avatar ·

Copia/clonación idiomática de un vector en una función parametrizada en Rust

¡Hola! Recientemente empecé a aprender Rust y me encontré con un problema al trabajar con vectores en funciones genéricas. Tengo una función que toma un vector y debe devolver una copia del mismo con algunos cambios. Pero no puedo entender cómo copiar correctamente el vector dentro de la función cuando el tipo de elemento es genérico. Aquí hay un ejemplo que no compila: ```rust fn duplicate_vector(vec: Vec) -> Vec { let mut new_vec = vec.clone(); // error: T no implementa Clone new_vec.push(/* algo */); new_vec } ``` El compilador se queja de que `T` no implementa el trait `Clone`. Entiendo que necesito agregar la restricción `Clone` para el tipo `T`, pero parece una solución poco flexible. ¿Y si quiero copiar solo ciertos elementos o no quiero requerir `Clone` para todos los tipos posibles? También probé usar `vec.to_vec()` y `vec.iter().cloned().collect()`, pero también requieren `Clone`. ¿Hay alguna forma de hacer esto sin la restricción `Clone`? ¿O es la única