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 में संग्रहीत होती हैं? कृपया समझाने में मदद करें, वरना मेरा दिमाग खराब हो गया है।