العودة إلى الدورة

المراجع والاستعارة

لغة Rust للأنظمة وأمن الـ Web3

استعارة البيانات (Borrowing)

ماذا لو أردت استخدام قيمة دون نقل ملكيتها؟ نستخدم حينها المراجع (&).

rust fn calculate_length(s: &String) -> usize { s.len() }

قواعد الاستعارة

  1. يمكنك الحصول على إما مرجع واحد قابل للتغيير (mut T&) أو أي عدد من المراجع غير القابلة للتغيير (T&) في نفس الوقت.
  2. يجب أن تكون المراجع صالحة دائماً.

يمنع هذا النظام 'سباق البيانات' (Data Races) في وقت التجميع، وهو أمر ضروري للأنظمة متعددة الخيوط (multi-threaded) وعقد البلوكشين الآمنة.