Como implementar Copy e Clone para uma estrutura com campo String (ou qualquer tipo não-Copy)?
Olá a todos! Comecei a estudar Rust recentemente e me deparei com um problema que não consigo resolver há dois dias. Estou escrevendo um programa simples para trabalhar com usuários, e tenho a seguinte estrutura:
```rust
struct User {
id: u32,
name: String,
email: String,
}
```
Preciso que essa estrutura possa ser copiada e passada para funções sem borrowing — ou seja, quero implementar os traits `Copy` e `Clone` para ela. Mas o compilador reclama quando escrevo `#[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`
```
Eu entendo que `String` não implementa `Copy`, porque é um tipo com alocação dinâmica de memória. Mas como fazer para que a estrutura possa ser copiada? Em C++, eu simplesmente escreveria um construtor de cópia, mas aqui é mais complicado.
Preciso escrev