Avatar ·

Qual é a diferença entre as traits Copy e Clone em Rust?

Olá a todos! Sou novo em Rust e estou tentando entender o gerenciamento de memória. Li sobre as traits Copy e Clone, mas não entendo completamente a diferença entre elas. Na documentação diz que Clone é "cópia profunda" e Copy é "cópia simples de bits". Mas na prática, vejo um comportamento estranho. Aqui está um exemplo que me confunde: ```rust #[derive(Copy, Clone)] struct Point { x: i32, y: i32, } #[derive(Clone)] struct Line { start: Point, end: Point, } fn main() { let p1 = Point { x: 1, y: 2 }; let p2 = p1; // Copy funciona? println!("{:?} {:?}", p1, p2); // Funciona! let l1 = Line { start: Point { x: 0, y: 0 }, end: Point { x: 5, y: 5 } }; let l2 = l1; // Erro! ocorre move // println!("{:?} {:?}", l1, l2); // Não compila } ``` Por que Copy funciona para Point, mas não para Line, mesmo Line usando Point com Copy internamente? Como escolher corretamente entre Copy e Clone?