خطأ "cannot move out of borrowed content" في Rust: كيف تصلحه؟
مرحباً بالجميع! بدأت تعلم Rust وواجهت خطأً لا أستطيع فهمه. لدي هيكل `User` ودالة يجب أن تغير حقل `name` الخاص به. إليك الكود:
```rust
struct User {
name: String,
age: u32,
}
fn update_name(user: &User, new_name: String) {
user.name = new_name; // الخطأ هنا
}
fn main() {
let user = User {
name: String::from("Alice"),
age: 30,
};
update_name(&user, String::from("Bob"));
println!("{}", user.name);
}
```
المترجم يخرج: `cannot move out of borrowed content` و `cannot move out of behind a shared reference`. أفهم أنني أمرر `&User` - هذا مرجع غير قابل للتغيير، لكني أريد تغيير حقل `name`. إذا غيرت التوقيع إلى `&mut User`، يتغير الخطأ إلى `cannot borrow immutable local variable 'user' as mutable`. جربت إضافة `mut` قبل `user` في `main`، لكن المترجم يقول إنه لا يمكن الاقتراض كقابل للتغيير لأنه قد تم اقتراضه كغير قابل للتغيير.