Avatar ·

Rust में String और str में क्या अंतर है? कब क्या उपयोग करें?

नमस्ते साथियों! मैंने Rust सीखना शुरू किया और एक बहुत ही भ्रमित करने वाले विषय पर ठोकर खाई — स्ट्रिंग्स। दस्तावेज़ीकरण में बार-बार `String` और `&str` मिलते हैं, लेकिन मैं समझ नहीं पा रहा हूँ कि इनमें क्या अंतर है और कब किस प्रकार का उपयोग करना चाहिए। मैंने एक छोटा उदाहरण लिखा: ```rust fn main() { let s1 = "hello"; // यह str है? let s2 = String::from("hello"); // और यह String है? println!("{}", s1); println!("{}", s2); // यह क्यों काम करता है? let s3: &str = &s2; println!("{}", s3); // और यह नहीं? // let s4: String = s1; // त्रुटि! } ``` मैं देख रहा हूँ कि `s1` एक स्ट्रिंग लिटरल है, और `s2` `String::from()` के माध्यम से बनाया गया है। लेकिन जब मैं `s1` को `String` प्रकार के वेरिएबल में असाइन करने की कोशिश करता हूँ, तो कंपाइलर त्रुटि देता है। जबकि मैं `s2` पर रेफरेंस ले सकता हूँ और उसे `&str` में असाइन कर सकता हूँ। क्या कोई सरल शब्दों में समझा सकता है: 1. `String` क्या है और `str` क्या है? 2. `str` हमेशा एम्परसेंड (`&str`) के साथ क्यों आता है? 3. किन स्थितियों में `String` का उपयोग करना चाहिए और किनमें `&str` का?