Avatar ·

Como implementar a trait Copy em Rust para um tipo personalizado?

Olá a todos! Sou novo em Rust e estou tentando entender as traits. Tenho uma estrutura simples representando um ponto no plano:\n\n```rust\nstruct Point {\n x: i32,\n y: i32,\n}\n```\n\nQuero que esta estrutura se comporte como um tipo simples que pode ser copiado implicitamente, como, por exemplo, `i32` ou `bool`. Ou seja, quero que ao atribuir `let p2 = p1;` a variável `p1` permaneça acessível (como com números), e não seja movida (como com `String` ou `Vec`). Ouvi dizer que para isso é necessário implementar a trait `Copy`. Mas quando tento escrever:\n\n```rust\nimpl Copy for Point {}\n```\n\nO compilador gera um erro: `the trait `Copy` cannot be implemented for this type; the type does not implement `Clone"`. Não entendo por que isso acontece. O que estou fazendo de errado? Preciso também implement