Avatar ·

Was ist der Unterschied zwischen den Traits Copy und Clone in Rust?

Hallo zusammen! Ich bin neu in Rust und versuche, mich mit dem Speichermanagement vertraut zu machen. Ich habe über die Traits Copy und Clone gelesen, verstehe aber nicht ganz, worin der Unterschied zwischen ihnen besteht. In der Dokumentation steht, dass Clone eine "tiefe Kopie" ist und Copy eine "einfache bitweise Kopie". Aber in der Praxis sehe ich ein seltsames Verhalten.\n\nHier ist ein Beispiel, das mich verwirrt:\n\n```rust\n#[derive(Copy, Clone)]\nstruct Point {\n x: i32,\n y: i32,\n}\n\n#[derive(Clone)]\nstruct Line {\n start: Point,\n end: Point,\n}\n\nfn main() {\n let p1 = Point { x: 1, y: 2 };\n let p2 = p1; // Copy wird angewendet?\n println!("{:?} {:?}", p1, p2); // Funktioniert!\n\n let l1 = Line { \n start: Point { x: 0, y: 0 }, \n end: Point { x: 5, y: 5 } \n };\n let l2 = l1; // Fehler! Move findet statt\n // print