Как исправить ошибку "use of moved value" в Rust?
مرحباً! لقد بدأت تعلم Rust وأواجه باستمرار خطأ "use of moved value". إليك مثال بسيط يسببه:
```rust
fn main() {
let s = String::from("привет");
let t = s;
println!("{}", s); // خطأ: use of moved value: `s`
}
```
أفهم أن Rust يراقب الملكية بدقة، لكنني لا أستطيع فهم كيفية نقل البيانات بشكل صحيح بين المتغيرات والدوال. على سبيل المثال، أريد كتابة دالة تأخذ سلسلة نصية، وتقوم بمعالجتها، ثم أريد استخدام هذه السلسلة مرة أخرى في main:
```rust
fn process(s: String) -> String {
// بعض المعالجة
s
}
fn main() {
let my_string = String::from("тест");
let result = process(my_string);
println!("{}", my_string); // خطأ مرة أخرى!
}
```
لماذا يحدث هذا؟ في C++ كنت سأمررها بالمرجع أو أنسخها، لكن هذا لا يعمل هنا. كيف يمكنني تنظيم الكود بشكل صحيح لتجنب هذا الخطأ؟ اشرح لي، من فضلك، مع أمثلة، ما هي الملكية، والاقت