تور راست فهرست مطالب

کد Unsafe هوشمند

smart pointer ها معمولاً کد unsafe رو خیلی استفاده می‌کنن. همون‌طور که قبلاً گفته شد، اونا ابزارهای رایجی برای تعامل با پایین‌ترین سطح‌های حافظه توی راست هستن.

کد unsafe چیه؟ کد unsafe دقیقاً مثل کد معمولی راست رفتار می‌کنه، به جز چند تا قابلیت که کامپایلر راست نمی‌تونه در موردشون تضمینی بده.

یه قابلیت اصلی کد unsafe اینه که یه pointer خام رو دیرفرنس می‌کنه. یعنی یه pointer خام به یه موقعیت توی حافظه رو می‌گیره و اعلام می‌کنه "این‌جا یه ساختار داده وجود داره!" و تبدیلش می‌کنه به یه نمایش از داده که می‌شه ازش استفاده کرد (مثلاً *const u8‎ به u8).

راست هیچ راهی برای پیگیری معنای هر بایتی که توی حافظه نوشته می‌شه، نداره. چون راست نمی‌تونه در مورد اینکه چی توی یه عدد دلخواه که به‌عنوان pointer خام استفاده می‌شه وجود داره، تضمینی بده، دیرفرنس کردن رو توی یه بلوک unsafe { ... }‎ قرار می‌ده.

smart pointer ها به‌شکل گسترده‌ای pointer های خام رو دیرفرنس می‌کنن، ولی توی کاری که انجام می‌دن خیلی خوب آزمایش شدن.