Avatar ·

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