Rust Smart Pointer
data structures that act like a pointer but also have additional metadata and capabilities.
while references only borrow data, in many cases, smart pointers own the data they point to.
smart pointers implement the Deref and Drop traits.
Most common