Rust में Copy और Clone ट्रेट्स में क्या अंतर है?
सभी को नमस्कार! मैं Rust में नया हूँ और मेमोरी प्रबंधन को समझने की कोशिश कर रहा हूँ। मैंने Copy और Clone ट्रेट्स के बारे में पढ़ा, लेकिन मुझे इनके बीच का अंतर पूरी तरह से समझ नहीं आया। डॉक्यूमेंटेशन में लिखा है कि Clone "डीप कॉपी" है, और Copy "सिंपल बिटवाइज़ कॉपी" है। लेकिन व्यवहार में मैं अजीब व्यवहार देखता हूँ।
यहाँ एक उदाहरण है जो मुझे भ्रमित करता है:
```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 काम करता है?
println!("{:?} {:?}", p1, p2); // काम करता है!
let l1 = Line {
start: Point { x: 0, y: 0 },
end: Point { x: 5, y: 5 }
};
let l2 = l1; // त्रुटि! move होता है
// println!("{:?} {:?}", l1, l2); // कंपाइल नहीं होगा
}
```
Point के लिए Copy क्यों काम करता है, जबकि Line के लिए नहीं, भले ही Line अंदर Point का उपयोग करता है जिसमें Copy है? Copy और Clone के बीच सही तरीके से कैसे चुनें?