Rust 2024 Edition : les principaux changements pour les développeurs
La communauté Rust continue de ravir les développeurs : l'équipe du langage a présenté Rust 2024 Edition — un nouveau standard qui apporte des améliorations tant attendues à l'écosystème. Contrairement aux correctifs annuels, une Edition est une revue significative des fonctionnalités, rompant la rétrocompatibilité dans certains aspects, mais offrant en retour un code plus propre et plus sûr. Nous analysons ce qui changera concrètement pour les développeurs écrivant en Rust.
Stabilisation des fonctions async dans les traits
L'une des innovations les plus marquantes est la stabilisation de async fn dans les traits. Auparavant, pour les traits asynchrones, il fallait utiliser des crates externes (par exemple, async-trait), ce qui ajoutait de la surcharge et compliquait le code. Désormais, le compilateur supporte nativement :
- La déclaration de méthodes asynchrones directement dans les traits :
async fn foo(&self) -> Result<String> - La génération automatique de Future imbriqués sans boxing manuel
- La flexibilité d'implémentation — les traits avec async fn peuvent être implémentés aussi bien pour des types synchrones qu'asynchrones
Cela simplifie la création de bibliothèques pour le travail en réseau, les bases de données et toutes les opérations asynchrones. Les développeurs n'ont plus à choisir entre commodité et performance.
Borrow checker amélioré et nouveau comportement des emprunts
Dans Rust 2024 Edition, le système d'emprunt est devenu encore plus intelligent. Les changements clés :
- Emprunts polymorphes — le compilateur comprend désormais mieux qu'un emprunt peut être aussi bien mutable qu'immuable selon le contexte, réduisant le nombre d'erreurs fausses.
- Meilleure gestion des durées de vie (lifetimes) — l'introduction de "placeholder lifetimes" dans certaines situations permet d'omettre les annotations explicites tout en préservant la sécurité.
- Nouvelles règles pour les fermetures (closures) — les fermetures suivent désormais plus précisément quelles variables sont capturées par référence et lesquelles par valeur, ce qui réduit le nombre d'erreurs à la compilation.
Pour les débutants, cela signifie moins de maux de tête avec le borrow checker, et pour les expérimentés, un code plus expressif et concis.
Améliorations syntaxiques et qualité de vie
Les développeurs de Rust n'ont pas oublié la syntaxe. Dans l'Edition 2024, plusieurs petites améliorations agréables sont apparues :
- Le mot-clé
never— il est désormais possible d'utiliser!(type never) dans un contexte plus large, par exemple dans les types de retour des fonctions qui ne se terminent jamais (panic, loop). - Amélioration du
matchavec des expressions guard — les expressions guard supportent désormais des combinaisons logiques complexes sans nécessiter de match imbriqués. - Nouvelle syntaxe pour les tuples —
(a, b)peut désormais être utilisé dans certains contextes comme type de retour sans indication explicite de parenthèses dans les fonctions.
Ces changements rendent le code plus lisible et réduisent la quantité de code passe-partout (boilerplate).
Qu'est-ce que cela signifie pour les développeurs ?
Rust 2024 Edition n'est pas qu'un ensemble de fonctionnalités, mais une évolution du langage vers une plus grande productivité. Pour les développeurs web, les programmeurs système et tous ceux qui utilisent Rust en production, la mise à jour signifie :
- Moins de dépendances vis-à-vis de crates externes pour les opérations asynchrones de base.
- Un code plus prévisible