Avatar ·

Rust में String और str में क्या अंतर है?

नमस्ते! मैंने अभी Rust सीखना शुरू किया है और `String` और `str` के बीच भ्रम का सामना किया। अन्य भाषाओं में, जैसे Python या JavaScript, स्ट्रिंग्स बस स्ट्रिंग्स होती हैं, लेकिन यहाँ कुछ चिड़ियाघर जैसा है। मैंने यह कोड लिखा: ```rust fn main() { let greeting = "Hello"; // यह str है? let name = String::from("World"); // और यह String है? println!("{} {}", greeting, name); // greeting को बदलने की कोशिश की // greeting.push_str("!"); // त्रुटि! // लेकिन name को बदला जा सकता है name.push_str("!"); // काम करता है println!("{}", name); } ``` मैं समझता हूँ कि `String` को बदला जा सकता है, लेकिन `str` को नहीं। लेकिन क्यों? कब किस type का उपयोग करना चाहिए? और `&str` क्या है? मैंने देखा कि functions में अक्सर `&str` लिखा जाता है, लेकिन मुझे समझ नहीं आता क्यों। मैंने यह भी देखा कि `str` का compile time पर ज्ञात आकार नहीं होता, जबकि `String` का होता है। क्या यह इस बात से संबंधित है कि स्ट्रिंग्स heap में संग्रहीत होती हैं? कृपया समझाने में मदद करें, वरना मेरा दिमाग खराब हो गया है।