Transfert de données empruntées
Les règles de Rust en ce qui concerne les références peuvent être résumées en:
- Rust n'autorise qu'une seule référence mutable (mot-clé
&mut
) ou plusieurs références immuables mais pas les deux.
- Une référence ne doit pas vivre plus longtemps que son propriétaire.
Cela n'est pas un problème lorsque que la référence est passée en paramètre
d'une fonction puisque la référence n'exite que dans la portée de la fonction.
Détails de la mémoire:
- La première règle empêche les accès concurrentiels. On parle d'accès concurrentiels lorsque plusieurs acteurs
essayent d'accéder à une ressource en même temps. Par exemple j'essaie de lire une valeur mais quelqu'un d'autre
la modifie en même temps, résultat je ne sais pas si je lis la valeur avant ou après modification. Cela arrive
fréquemment dans les programme utilisant plusieurs fils d'exécution (en anglais threads).
- La deuxième règle nous évite la mauvaise utilisation de références qui pourrait faire référence à une donnée
inexistante (les fameux dandling pointers du language C).