Avatar ·

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

Ich habe gerade angefangen, Rust zu lernen, und bin bei zwei Traits verwirrt – Copy und Clone. Beide scheinen das Kopieren von Werten zu ermöglichen, aber der Compiler verhält sich unterschiedlich. Hier ist ein Beispiel, das mich verwirrt hat. Ich versuche, eine Struktur zu kopieren: ```rust struct Point { x: i32, y: i32, } fn main() { let p1 = Point { x: 10, y: 20 }; let p2 = p1; // move let p3 = p1; // error: use of moved value } ``` Wenn ich `#[derive(Copy)]` hinzufüge, funktioniert der Code: ```rust #[derive(Copy, Clone)] struct Point { x: i32, y: i32, } ``` Aber wenn ich nur `Clone` verwende, muss ich explizit `.clone()` aufrufen: ```rust let p2 = p1.clone(); ``` Warum ist das so? Wann sollte man Copy und wann Clone verwenden? Was ist der grundlegende Unterschied? Und warum benötigt Copy Clone (ich habe gesehen, dass