خطأ "cannot borrow as mutable because it is also borrowed as immutable" في Rust: كيف أصلحه؟
مرحبًا! لقد بدأت للتو في تعلم Rust وواجهت مشكلة لا أستطيع فهمها.
لدي برنامج بسيط يأخذ سلسلة نصية ويحاول أولاً الحصول على طولها ثم تغيير الحرف الأول:
```rust
fn main() {
let mut text = String::from("hello");
let first = &text[0..1]; // مرجع غير قابل للتغيير
text.push_str(" world"); // محاولة اقتراض قابل للتغيير
println!("First char: {}", first);
}
```
يُصدر المترجم الخطأ التالي:
```
error[E0502]: cannot borrow `text` as mutable because it is also borrowed as immutable
```
أفهم أن في Rust قواعد للاقتراض: إما مرجع واحد قابل للتغيير، أو أي عدد من المراجع غير القابلة للتغيير. لكن لماذا تنتهك حالتي هذه القاعدة؟ فأنا أولاً آخذ مرجعًا غير قابل للتغيير لجزء من السلسلة، ثم أحاول تغييرها. عندما أستخدم `first` بعد التغيير، قد يؤدي ذلك إلى مشاكل؟ اشرح لي، من فضلك، كيف يعمل هذا عمليًا وكيف أحل المشكلة بشكل صحيح.
تحديدًا: أحتاج إلى أخذ سلسلة فرعية