Rc is a smart pointer that moves data from the stack onto the heap. It allows us to
Rc smart pointers that all have the ability to immutably borrow the data
that was put on the heap.
Only when the last smart pointer is dropped does the data on the heap become deallocated.