Les pointeurs intelligents peuvent sembler limités, mais ils peuvent être utilisés de manière très puissante avec les structures que nous venons de voir.
Rc<Vec<Foo>>
- Permet de cloner plusieurs pointeurs intelligents pouvant
emprunter le même vecteur de données immuables. Pour rappel Rc
place les
données sur le tas.
Rc<RefCell<Foo>>
- Permet à plusieurs pointeurs intelligents d'emprunter
mutuellement ou immuablement la même structure Foo
.
Arc<Mutex<Foo>>
- Permet à un pointeur intelligent de verrouiller
temporairement une donnée (celle-ci ne pourra plus être emprunté mutablement
ou immuablement) de manière exclusive à un thread du CPU (les autres threads
n'y auront pas accès).
Détail de la mémoire: