Quatre limitations surprenantes du vérificateur d'emprunts de Rust

2024-12-24

Cet article explore quatre limitations surprenantes du vérificateur d'emprunts de Rust, rencontrées même par des programmeurs Rust expérimentés. La première limitation concerne l'incapacité du vérificateur d'emprunts à prendre pleinement en compte les instructions match et return, ce qui conduit à des vérifications redondantes lors du travail avec les HashMaps. La deuxième limitation concerne la programmation asynchrone, où Rust manque actuellement de la capacité d'exprimer certaines signatures de type de rappel asynchrone. La troisième se concentre sur les fermetures FnMut qui ne permettent pas le réemprunt de variables capturées, ce qui restreint l'accès aux états mutables dans les opérations asynchrones. Enfin, le manque de prise en compte du flux de contrôle du vérificateur Send entraîne que certains Futures qui devraient être Send sont incorrectement marqués comme non Send. L'auteur illustre ces limitations et leurs défis avec des exemples de code concrets et des solutions de contournement, plaidant pour des améliorations du système de types de Rust afin d'améliorer la productivité des développeurs.