Rust में Box, ref, & और * को समझना: क्या अंतर है और इनका उपयोग कैसे करें?
सभी को नमस्ते! मैंने हाल ही में Rust सीखना शुरू किया है और लगातार इन चार चीज़ों में भ्रमित हो जाता हूँ: `Box`, `ref`, `&` और `*`। मैं समझता हूँ कि ये सभी किसी न किसी तरह pointers और references से संबंधित हैं, लेकिन मैं यह नहीं समझ पा रहा हूँ कि कब क्या उपयोग करना चाहिए।
उदाहरण के लिए, मैं यह प्रोग्राम लिखता हूँ:
```rust
fn main() {
let x = 42;
let y = &x; // reference
let z = Box::new(x); // Box
println!("{} {}", y, z);
}
```
यहाँ सब कुछ काम करता है। लेकिन जब मैं कुछ और जटिल करने की कोशिश करता हूँ, जैसे pattern matching, तो सब कुछ टूट जाता है:
```rust
fn main() {
let maybe_number = Some(10);
match maybe_number {
Some(ref x) => println!("मिल गया {}", x),
None => println!("कुछ नहीं है"),
}
}
```
यहाँ `ref` की आवश्यकता क्यों है, न कि सिर्फ `x`? और `*`, `&` से कैसे अलग है? मैंने पढ़ा है कि `*` एक...