Qual é a diferença entre as traits Copy e Clone em Rust?
Acabei de começar a estudar Rust e fiquei confuso com duas traits — Copy e Clone. Ambas parecem permitir copiar valores, mas o compilador se comporta de forma diferente.\n\nAqui está um exemplo que me confundiu. Estou tentando copiar uma struct:\n\n```rust\nstruct Point {\n x: i32,\n y: i32,\n}\n\nfn main() {\n let p1 = Point { x: 10, y: 20 };\n let p2 = p1; // move\n let p3 = p1; // error: use of moved value\n}\n```\n\nSe eu adicionar `#[derive(Copy)]`, o código funciona:\n\n```rust\n#[derive(Copy, Clone)]\nstruct Point {\n x: i32,\n y: i32,\n}\n```\n\nMas se eu usar apenas `Clone`, preciso chamar explicitamente `.clone()`:\n\n```rust\nlet p2 = p1.clone();\n```\n\nPor que isso? Quando devo usar Copy e quando Clone? Qual é a diferença fundamental? E por que Copy requer Clone (vi que eles geralmente vêm juntos no derive)?\n\nExplique, por favor, como para um iniciante. Desde já, obrigado!\n<<>>\n
Diferença principal: semântica de movimentação vs cópia
\n\nEm Rust, por padrão, de
No answers yet.
Faça login para deixar uma resposta