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