تميل المؤشرات الذكية (Smart pointers) إلى استخدام التعليمة البرمجية غير آمن (unsafe) كثيرًا. كما ذكرنا سابقًا، فهي أداة شائعة للتفاعل مع أدنى مستويات الذاكرة في رست (Rust).
ما هي التعليمة البرمجية غير آمن (unsafe)؟ تتصرف التعليمات البرمجية غير الآمنة تمامًا مثل رست (Rust) العادي باستثناء بعض القدرات التي لا يستطيع مترجم رست (Rust) تقديم ضمانات بشأنها.
القدرة الأساسية للتعليمات البرمجية غير آمن (unsafe) هي الوصول لمحتويات المؤشر الخام (dereferencing a raw pointer). وهذا يعني أخذ مؤشر الخام إلى موضع في الذاكرة والإعلان عن "يوجد هيكل بيانات هنا!" ثم تحويلها إلى تمثيل للبيانات التي يمكنك استخدامها (على سبيل المثال، *const u8
إلى u8
).
ليس لدى رست (Rust) طريقة لتتبع معنى كل بايت يتم كتابته في الذاكرة. نظرًا لأن رست (Rust) لا يمكنه تقديم ضمانات حول ما هو موجود عندما يكون هناك رقم عشوائي مستخدم كـ مؤشر الخام، فإنه يضع إلغاء المرجعية في كتلة unsafe { ... }
.
المؤشرات الذكية (Smart pointers) تصل لمحتويات المؤشر الخام على نطاق واسع، لكنها متأكدة جيدًا في ما تفعله.