Avatar ·

Cómo implementar Copy y Clone para una estructura con un campo String (o cualquier tipo no Copy)

¡Hola a todos! Acabo de empezar a aprender Rust y me encontré con un problema que no he podido resolver durante dos días. Estoy escribiendo un programa simple para trabajar con usuarios, y tengo esta estructura: ```rust struct User { id: u32, name: String, email: String, } ``` Necesito que esta estructura se pueda copiar y pasar a funciones sin borrowing — es decir, quiero implementar los traits `Copy` y `Clone` para ella. Pero el compilador se queja cuando escribo `#[derive(Copy, Clone)]`: ``` error[E0204]: the trait `Copy` may not be implemented for this type --> src/main.rs:1:10 | 1 | #[derive(Copy, Clone)] | ^^^^ 2 | struct User { 3 | name: String, | ---- this field does not implement `Copy` ``` Entiendo que `String` no implementa `Copy` porque es un tipo con asignación dinámica de memoria. Pero entonces, ¿cómo hago para que la estructura se pueda copiar? En C++ simplemente escribiría un constructor de copia, pero aquí es más complicado. Necesito escribir