2Fermer4
UtherLe 14/07/2024 à 07:44
J'allais justement te proposer comme solution de passer par Rc<RefCell<T>>, ce que d'autre on visiblement déjà fait.

Comme pour tous les langages, en Rust il y a des spécificités à apprendre, et en effet ce n'est certainement pas le langage le plus simple. Quand on fait du Rust, la première difficulté est en effet d'apprendre à composer avec le borrow checker qui est très énervant, surtout au début car c'est une mécanique restrictive qui n'est pas commune avec les autres langages. C'est le compromis à accepter pour avoir à la fois les performances et la sécurité.
La restriction d'avoir un seul borrow mutable a la fois, c'est la base de ce qui permet de garantir l'absence de data race et d'erreur mémoire à la compilation: pour toute la durée de vie d'une variable on est certain que son contenu ne peut être modifié de manière imprévue par une autre partie du code. C'est sur que c'est contraignant, mais c'est ce qui fait que l'on a rarement de mauvaises surprises à partir du moment où ça compile.