Avatar ·

Rust में: clone() और to_owned() में क्या अंतर है और कब क्या उपयोग करें?

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

अभी तक कोई उत्तर नहीं।

लॉग इन करें उत्तर देने के लिए

ब्लॉग