لماذا لا يمكن تخزين قيمة ومرجع إليها في نفس الهيكل في Rust؟
مرحبًا بالجميع! بدأت في تعلم Rust وواجهت مشكلة حيرتني كثيرًا. أحاول كتابة هيكل يخزن بعض البيانات وفي نفس الوقت مرجعًا إلى هذه البيانات داخله. على سبيل المثال، أريد إنشاء هيكل يحتوي على سلسلة نصية وأول حرف منها — مرجع إلى هذه السلسلة.
هذا ما أحاول فعله:
```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` إلى الهيكل، لا يمكنني استخدام `first` بعد ذلك لأنه يشير إلى عنوان قديم. ولكن كيف يمكن تصميم مثل هذا الهيكل بشكل صحيح؟ في لغات أخرى، كنت أستطيع بسهولة تخزين كائن ومؤشر إلى حقل من حقوله. لماذا Rust صارم جدًا؟ هل هناك طريقة لتخزين قيمة ومرجع إليها في نفس الهيكل؟