Oltre alla possibilità di creare riferimenti a dati tipizzati esistenti con l'operatore &, Rust ci dà la possibilità di creare struct simili a riferimenti, chiamate smart pointer.
Possiamo pensare ai riferimenti, a un livello alto, come un tipo che ci dà accesso a un altro tipo. Gli smart pointer si distinguono dai normali riferimenti per il loro comportamento, in quanto operano in base a una logica interna scritta dal programmatore. Tu — il programmatore — sei la parte smart.
Tipicamente gli smart pointer implementano i trait Deref, DerefMut e Drop per specificare la logica di cosa deve accadere quando la struttura viene dereferenziata con gli operatori * e ..