Rust में Cell और रेफरेंस-काउंटेड टाइप्स की समग्र व्याख्या
मैं Rust में नया हूँ और यह समझने की कोशिश कर रहा हूँ कि Cell, RefCell, Rc और Arc कैसे काम करते हैं। आधिकारिक दस्तावेज़ में इनका वर्णन किया गया है, लेकिन मुझे समग्र तस्वीर नहीं मिल रही — ये टाइप्स एक-दूसरे से कैसे संबंधित हैं और कब किसका उपयोग करना चाहिए।
यहाँ एक विशिष्ट उदाहरण है जिसने मुझे भ्रमित किया। मैं एक ग्राफ बनाने की कोशिश कर रहा हूँ जहाँ नोड्स एक-दूसरे को संदर्भित कर सकते हैं। मेरे पास एक Node स्ट्रक्चर है:
```rust
struct Node {
value: i32,
children: Vec,
}
```
लेकिन मैं चक्रीय संदर्भ (cyclic references) नहीं जोड़ सकता क्योंकि ownership के अनुसार प्रत्येक नोड का एक मालिक होना चाहिए। मैंने lifetimes के साथ references का उपयोग करने की कोशिश की:
```rust
struct Node<'a> {
value: i32,
children: Vec<&'a Node<'a>>,
}
```
लेकिन कंपाइलर lifetimes पर त्रुटि दे रहा है और मैं समझ नहीं पा रहा कि इसे कैसे ठीक करूँ। फिर मैंने Rc के बारे में पढ़ा, लेकिन जब मैंने...