بیاید به چند تا smart pointer که قبلاً دیدیم فکر کنیم، مثل Vec<T> و String.
Vec<T> یه smart pointer هست که فقط مالک یه ناحیه از حافظهی بایتیه. کامپایلر راست هیچ ایدهای نداره که توی این بایتها چیه. smart pointer تفسیر میکنه که برداشتن آیتمها از ناحیهی حافظهای که مدیریتش میکنه یعنی چی، پیگیری میکنه که ساختارهای داده داخل اون بایتها از کجا شروع و کجا تموم میشن، و در نهایت یه pointer خام رو به ساختارهای داده دیرفرنس میکنه تا یه رابط تمیز و ارگونومیک برای استفادهی ما بسازه (مثلاً my_vec[3]).
به همین شکل، String هم یه ناحیه از حافظهی بایتی رو پیگیری میکنه، و بهشکل برنامهای محتوایی که توش نوشته میشه رو محدود میکنه که همیشه utf-8 معتبر باشه، و کمک میکنه اون ناحیهی حافظه به یه نوع &str دیرفرنس بشه.
هر دوی این ساختارهای داده از دیرفرنس کردن unsafeِ pointer های خام برای انجام کارشون استفاده میکنن.
جزئیات حافظه: