Умные указатели могут показаться довольно ограниченными по функционалности, но главное то, что они могут создавать очень мощные комбинации для использования в коде.
Rc<Vec<Foo>> - позволяет клонирование нескольких умных указателей, которые могут заимствовать из кучи один и тот же вектор неизменяемых структур данных.
Rc<RefCell<Foo>> - дает возможность нескольким умных указателям заимствовать одну и туже структуру Foo как неизменяемую или изменяемую.
Arc<Mutex<Foo>> - дает возможность нескольким умным указателям временно блокировать в процессорном потоке изменяемые или неизменяемые заимствования.
Детали для запоминания: