لماذا لا يمكن تخزين قيمة ومرجع إليها في نفس الهيكل في Rust؟
مرحباً بالجميع! بدأت تعلم Rust وواجهت مشكلة لم أستطع حلها منذ عدة أيام.
أنا أكتب محللاً لملفات الإعدادات. لدي هيكل `Parser` يقرأ البيانات من سلسلة نصية ويوفر مكرراً للكلمات. هذا هو الكود المبسط:
```rust
struct Parser {
data: String,
words: Vec<&str>, // مراجع إلى data
}
impl Parser {
fn new(input: &str) -> Self {
let data = input.to_string();
let words: Vec<&str> = data.split_whitespace().collect();
Parser { data, words } // خطأ!
}
}
```
المترجم يظهر خطأ: `cannot move out of 'data' because it is borrowed`. أفهم أن `words` تحتوي على مراجع إلى `data`، ولكن `data` و `words` موجودان في نفس الهيكل! أليس من المفترض أن يفهم Rust أنهما يعيشان معاً؟
جربت خيارات مختلفة: استخدام `Rc`، تغيير ترتيب الحقول، إضافة lifetime — لم يساعد شيء. ربما أصمم الهيكل بشكل خاطئ؟ كيف يمكن تخزين قيمة ومرجع إليها في Rust؟