এই ক্ষেত্রে ত্রুটিটির অর্থ কী:
fn main() {
let mut v: Vec<usize> = vec![1, 2, 3, 4, 5];
v[v[1]] = 999;
}
error[E0502]: cannot borrow `v` as immutable because it is also borrowed as mutable
--> src/main.rs:3:7
|
3 | v[v[1]] = 999;
| --^----
| | |
| | immutable borrow occurs here
| mutable borrow occurs here
| mutable borrow later used here
আমি দেখতে পেয়েছি যে সূচকগুলি Index
এবং IndexMut
বৈশিষ্ট্যগুলির মাধ্যমে প্রয়োগ করা হয় এবং v[1]
এটি সিনট্যাকটিক চিনি *v.index(1)
। এই জ্ঞান দিয়ে সজ্জিত, আমি নিম্নলিখিত কোডটি চালানোর চেষ্টা করেছি:
use std::ops::{Index, IndexMut};
fn main() {
let mut v: Vec<usize> = vec![1, 2, 3, 4, 5];
*v.index_mut(*v.index(1)) = 999;
}
আমার অবাক করার বিষয়, এটি নির্দোষভাবে কাজ করে! প্রথম স্নিপেট কেন কাজ করে না, তবে দ্বিতীয়টি কাজ করে? আমি ডকুমেন্টেশনটি যেভাবে বুঝি, সেগুলি সমতুল্য হওয়া উচিত, তবে এটি অবশ্যই তেমনটি নয়।