راست علاوه بر توانایی ساختن رفرنس به دادههای تایپشدهی موجود با عملگر &، این توانایی رو هم بهمون میده که struct هایی شبیه رفرنس بسازیم که بهشون smart pointer میگن.
میتونیم رفرنسها رو در سطح بالا مثل یه نوع در نظر بگیریم که بهمون دسترسی به یه نوع دیگه رو میده. smart pointer ها توی رفتار خودشون با رفرنسهای معمولی فرق دارن، چون بر اساس یه منطق داخلی که برنامهنویس مینویسه، عمل میکنن. تو — برنامهنویس — همون بخش smart هستی.
معمولاً smart pointer ها trait های Deref، DerefMut و Drop رو پیادهسازی میکنن تا مشخص کنن وقتی ساختار با عملگرهای * و . دیرفرنس میشه، چه اتفاقی باید بیفته.