Comment implémenter Copy et Clone pour une structure avec un champ String (ou tout type non-Copy) ?
Bonjour à tous ! Je viens de commencer à apprendre Rust et je suis confronté à un problème que je n'arrive pas à résoudre depuis deux jours. J'écris un programme simple pour travailler avec des utilisateurs, et j'ai cette structure :
```rust
struct User {
id: u32,
name: String,
email: String,
}
```
J'ai besoin que cette structure puisse être copiée et passée à des fonctions sans emprunt — c'est-à-dire que je veux implémenter les traits `Copy` et `Clone` pour elle. Mais le compilateur se plaint quand j'écris `#[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`
```
Je comprends que `String` n'implémente pas `Copy` parce que c'est un type avec allocation dynamique de mémoire. Mais comment faire pour que la structure puisse être copiée ? En C++, j'écrirais simplement un constructeur de copie, mais ici c'est plus compliqué.
J'ai besoin d'éc