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 के बारे में पढ़ा, लेकिन जब मैंने...