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
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs
PHP im Jahr 2025: Neue Funktionen und Verbesserungen