Rust में एक ही संरचना में मान और उसके संदर्भ को संग्रहीत क्यों नहीं किया जा सकता?
सभी को नमस्कार! मैंने Rust सीखना शुरू किया है और एक समस्या का सामना किया जिसने मुझे बहुत हैरान कर दिया। मैं एक ऐसी संरचना (struct) लिखने की कोशिश कर रहा हूँ जो कुछ डेटा और साथ ही उस डेटा के अंदर एक संदर्भ (reference) को संग्रहीत करे। उदाहरण के लिए, मैं एक ऐसी संरचना बनाना चाहता हूँ जिसमें एक स्ट्रिंग और उसका पहला अक्षर हो — जो उसी स्ट्रिंग का संदर्भ हो।
मैं यह करने की कोशिश कर रहा हूँ:
```rust
struct MyStruct {
data: String,
first_char: &str, // data का संदर्भ
}
fn main() {
let text = String::from("Hello");
let first = &text[..1];
let s = MyStruct { data: text, first_char: first };
println!("{}", s.first_char);
}
```
कंपाइलर एक त्रुटि देता है: `error[E0382]: borrow of moved value: 'text'`। मैं समझता हूँ कि जब मैं `text` को संरचना में स्थानांतरित (move) करता हूँ, तो मैं `first` का उपयोग नहीं कर सकता, क्योंकि यह पुराने पते का संदर्भ देता है। लेकिन फिर ऐसी संरचना को सही तरीके से कैसे डिज़ाइन किया जाए? अन्य भाषाओं में मैं आसानी से एक ऑब्जेक्ट और उसके फ़ील्ड का पॉइंटर संग्रहीत कर सकता था। Rust इतना सख्त क्यों है? क्या मान और उसके संदर्भ को एक ही संरचना में संग्रहीत करने का कोई तरीका है?