Rust में Copy और Clone ट्रेट्स में क्या अंतर है?
मैंने अभी Rust सीखना शुरू किया है और दो ट्रेट्स — Copy और Clone — में उलझन हो गई है। दोनों ही मानों को कॉपी करने की अनुमति देते हैं, लेकिन कंपाइलर अलग व्यवहार करता है।
यहाँ एक उदाहरण है जिसने मुझे भ्रमित किया। मैं एक स्ट्रक्चर को कॉपी करने की कोशिश कर रहा हूँ:
```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
}
```
अगर मैं `#[derive(Copy)]` जोड़ दूं, तो कोड काम करता है:
```rust
#[derive(Copy, Clone)]
struct Point {
x: i32,
y: i32,
}
```
लेकिन अगर मैं केवल `Clone` का उपयोग करूं, तो मुझे स्पष्ट रूप से `.clone()` कॉल करना होता है:
```rust
let p2 = p1.clone();
```
ऐसा क्यों है? Copy का उपयोग कब करना चाहिए और Clone का कब? मूलभूत अंतर क्या है? और Copy को Clone की आवश्यकता क्यों है (मैंने देखा है कि वे अक्सर derive में एक साथ आते हैं)?
कृपया एक शुरुआतकर्ता की तरह समझाएं। पहले से धन्यवाद!
<<>>
मुख्य अंतर: मूव बनाम कॉपी की सेमैंटिक्स
Rust में डिफ़ॉल्ट रूप से, असाइनमेंट एक मूव होता है।