Rust में: clone() और to_owned() में क्या अंतर है और कब क्या उपयोग करें?
नमस्ते साथियों! मैंने हाल ही में Rust सीखना शुरू किया है और clone() और to_owned() मेथड्स में लगातार भ्रमित हो रहा हूँ। दोनों ही डेटा की कॉपी बनाते हैं, लेकिन डॉक्यूमेंटेशन में लिखा है कि ये अलग चीजें हैं। व्यवहार में मैं देखता हूँ कि clone() को किसी भी टाइप पर कॉल किया जा सकता है जो Clone ट्रेट को इम्प्लीमेंट करता है, जबकि to_owned() केवल ToOwned ट्रेट वाले टाइप पर। लेकिन क्या ये एक ही चीज़ नहीं है?
यहाँ एक विशिष्ट उदाहरण है जो मुझे भ्रमित करता है:
```rust
let s: &str = "hello";
let a: String = s.to_owned();
let b: String = s.to_string(); // यह भी काम करता है
// लेकिन मैं String पाने के लिए s.clone() क्यों नहीं लिख सकता?
// क्योंकि clone() &str लौटाता है, String नहीं!
```
दूसरा उदाहरण: मैं slices के साथ काम कर रहा हूँ। मेरे पास &[i32] है, और मैं Vec प्राप्त करना चाहता हूँ। मैं slice.to_owned() कर सकता हूँ - यह काम करता है। लेकिन अगर मैं slice.