Să luăm drept exemplu niște pointeri inteligenți deja cunoscuți Vec<T>
și String
.
Vec<T>
este un pointer inteligent ce deține o regiune din memorie. Compilatorul de Rust nu știe ce se află
în acei octeți. Pointerul inteligent interpretează ce înseamnă să ia un element din regiunea de memorie pe care o gestionează,
ține socoteala unde încep și unde se termină structurile de date ale acelor byți, și, în cele din urmă, dereferențiază un pointer simplu
în structuri de date cu o interfață simplă și ergonomică pe care le putem folosi (ex my_vec[3]
).
Asemănător, String
ține socoteala regiunilor de memorie are byților, și restricționează conținutul scris în acestea să fie mereu în formatul
utf-8
și ajută la dereferențierea acelei regiuni de memorie în tipul &str
.
Ambele structuri de date folosesc dereferențierea nesigură a pointerilor simpli pentru a-și împlini scopul.
Detalii despre memorie: