k (though we must be careful with mutable
globals). Data on the heap poses a different problem.</p>

<p>If all Rust had on the heap was data uniquely owned by a pointer on the stack,
then we could just treat such a pointer as a struct that owns the value on the
heap. Box, Vec, String, and HashMap, are examples of types which uniquely
own data on the heap.</p>

<p>Unfortunately, data on the heap is not <em>always</em> uniquely owned. Rc for instance
introduces a notion of <em>shared</em> ownership. Shared ow