Rust में Box, ref, & और * को समझना: इनमें क्या अंतर है और इनका उपयोग कैसे करें?
सभी को नमस्ते! मैंने हाल ही में Rust सीखना शुरू किया है और लगातार इन चार चीज़ों में भ्रमित हो जाता हूँ: `Box`, `ref`, `&` और `*`। मैं समझता हूँ कि ये सभी किसी न किसी तरह पॉइंटर्स और 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` क्यों नहीं? और `*`, `&` से कैसे अलग है? मैंने पढ़ा है कि `*` एक...