Avatar ·

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