Rust में "cannot move out of borrowed content" त्रुटि: कारण और सुधार
नमस्ते! मैंने Rust सीखना शुरू किया है और एक त्रुटि का सामना किया जिसे मैं समझ नहीं पा रहा हूँ। कोड:
```rust
fn main() {
let s = String::from("hello");
let r = &s;
let s2 = *r; // त्रुटि: cannot move out of borrowed content
println!("{}", s2);
}
```
मैंने सोचा कि `*r` reference को dereference करता है और मुझे स्ट्रिंग `s` का स्वामित्व देता है। लेकिन कंपाइलर कहता है: "cannot move out of `*r` which is behind a shared reference"। ऐसा क्यों? आखिर मैं तो बस मान कॉपी करना चाहता हूँ।
यही बात vectors के साथ भी होती है:
```rust
fn get_first(v: &Vec) -> i32 {
v[0] // त्रुटि: cannot move out of borrowed content
}
```
मैं समझता हूँ कि Rust स्वामित्व पर सख्ती से ध्यान देता है, लेकिन यह नहीं समझता कि reference से मान क्यों नहीं लिया जा सकता। अन्य भाषाओं (C++, Python) में यह काम करता है। reference से सही तरीके से मान कैसे प्राप्त करें? और यह सीमा क्यों मौजूद है?
कृपया इन उदाहरणों को ठीक करने का तरीका और त्रुटि के गहरे कारण को समझाएँ। पहले से धन्यवाद!
<<>>