Smart pointers might seem limited, but they can make some very powerful combinations.
Rc<Vec<Foo>>
- Allow the cloning of multiple smart pointers that can borrow the same vector of immutable data structures on the heap.
Rc<RefCell<Foo>>
- Allow multiple smart pointers the ability to borrow mutably/immutably the same struct Foo
Arc<Mutex<Foo>>
- Allow multiple smart pointers the ability to lock temporary mutable/immutable borrows in a CPU thread exclusive manner.
Memory detail: