Rust में मेमोरी प्रबंधन के लिए कचरा संग्रहकर्ता के बजाय क्या उपयोग किया जाता है?
नमस्ते! मैंने अभी-अभी Java और Python के बाद Rust सीखना शुरू किया है, और मुझे एक गलतफहमी हुई है। Java और Python में एक कचरा संग्रहकर्ता (GC) होता है जो स्वचालित रूप से मेमोरी मुक्त करता है जब ऑब्जेक्ट की आवश्यकता नहीं रहती। लेकिन मैंने पढ़ा कि Rust में GC नहीं है। तो Rust बिना कचरा संग्रहकर्ता के मेमोरी का प्रबंधन कैसे करता है? क्या मुझे C की तरह मैन्युअल रूप से `free()` या `delete` कॉल करना होगा? यह असुविधाजनक है और लीक का कारण बन सकता है!
यहाँ एक सरल उदाहरण है जो मैंने लिखा है, यह समझने की कोशिश कर रहा हूँ कि क्या होगा:
```rust
fn main() {
let s1 = String::from("नमस्ते");
let s2 = s1; // मुझे Java की तरह कॉपी की उम्मीद थी
println!("{}", s1); // यह कंपाइल नहीं होता! त्रुटि: borrow of moved value
}
```
मैं समझ नहीं पा रहा हूँ कि `s2` को असाइन करने के बाद `s1` उपलब्ध क्यों नहीं है। Java में, `s2` बस उसी स्ट्रिंग को इंगित करेगा, और `s1` वैध रहेगा। "move" क्या है और यह GC की अनुपस्थिति से कैसे संबंधित है? और Rust बिना कचरा संग्रहकर्ता के मेमोरी सुरक्षा कैसे सुनिश्चित करता है? कृपया एक शुरुआतकर्ता के लिए समझाएँ।
इसके अलावा, मैंने "स्वामित्व" के बारे में सुना है।