خذ بعين الاعتبار بعض المؤشرات الذكية (smart pointers) التي رأيناها بالفعل مثل Vec<T>
وString
.
Vec<T>
هو مؤشر ذكي يمتلك فقط بايتات في منطقة معينة من الذاكرة. ليس لدى مترجم رست (Rust) أي فكرة عما هو موجود في هذه البايتات. يفسر المؤشر الذكي ما يعنيه لإحضار العناصر من منطقة الذاكرة التي يديرها، ويتتبع من أين تبدأ وتنتهي هياكل البيانات داخل تلك البايتات، ثم في النهاية يقوم بالوصول إلى محتوى المؤشر الخام ويضعها في هياكل البيانات ليكون في النهاية كواجهة مريحة ونظيفة ولطيفة بالنسبة لنا عند استخدمه (على سبيل المثال my_vec[3]
).
وبنفس الكيفية، تقوم String
بتتبع البايتات في منطقة من الذاكرة، وتقيد المحتوى المكتوب فيها برمجيًا ليكون دائمًا بترميز utf-8
صالح، وتساعد على الوصول إلى محتوى تلك المنطقة الذاكرة كنوع &str
.
تستخدم كل من هياكل البيانات المذكورة إلغاء مرجعية غير آمنة للمؤشرات الخام للقيام بعملها.
تفاصيل الذاكرة: