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