Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Annexe E : éditions

Dans le chapitre 1, vous avez vu que cargo new ajoute une petite métadonnée concernant une édition à votre fichier Cargo.toml . Cette annexe vous explique ce que cela signifie !

Le langage Rust et son compilateur Rust ont un cycle de publication de six semaines, ce qui signifie que les utilisateurs reçoivent un flux constant de nouvelles fonctionnalités. D’autres langages de programmation publient des changements plus importants à un rythme moins soutenu ; Rust publie a fait le choix de publier de plus petites mises à jour, plus fréquemment. Au bout d’un moment, tous ces petits changements finissent par s’accumuler. Mais de mise à jour en mise à jour, il devient difficile de regarder en arrière et de dire “Eh bien, entre Rust 1.10 et Rust 1.31, Rust a beaucoup changé !”

Tous les trois ans environ, l’équipe de Rust sort une nouvelle édition de Rust. Chaque édition rassemble les fonctionnalités qui ont été apportées pour former un paquetage clair, avec une documentation et des outils complètement à jour. Les sorties de ces nouvelles éditions font partie intégrante du procédé de publication habituel de six semaines.

Les éditions apportent différentes choses pour différentes personnes :

  • Pour les utilisateurs actifs de Rust, une nouvelle édition amène son lot de modifications incrémentales dans un paquetage aisé à comprendre.
  • Pour ceux qui n’utilisent pas Rust, une nouvelle édition est le signe que des avancées majeures ont été accomplies, ce qui pourrait justifier de reconsidérer Rust et d’y jeter un nouveau coup d’œil.
  • Pour les développeurs de Rust, une nouvelle édition fournit un point de référence pour l’ensemble du projet.

Au moment de l’écriture de ces lignes, quatre éditions de Rust sont disponibles : Rust 2015, Rust 2018, Rust 2021 et Rust 2024. Ce Livre est écrit en utilisant les conventions propres à l’édition 2024 de Rust.

La clé edition dans Cargo.toml indique au compilateur quelle édition il doit utiliser pour votre code. Si la clé n’existe pas, Rust utilise 2015 comme valeur d’édition par défaut, par souci de rétro-compatibilité.

Chaque projet peut choisir une édition autre que l’édition 2015 par défaut. Les éditions peuvent contenir des changements incompatibles, comme par exemple l’introduction d’un nouveau mot-clé qui entre en conflit avec des identifiants (noms de variables, de fonction, etc.) dans le code. Toutefois, à moins que vous ne choisissiez d’adopter ces modifications, votre code continuera à se compiler, quand bien même vous mettez à jour la version du compilateur Rust que vous utilisez.

Toutes les versions du compilateur Rust prennent en charge toute édition antérieure à la sortie de ce compilateur, et elles peuvent lier entre elles des crates de n’importe quelle édition prise en charge. Les changements de chaque édition n’affectent que la manière dont le compilateur analyse initialement le code. Conséquemment, si vous utilisez Rust 2015 et qu’une de vos dépendances utilise Rust 2018, votre projet se compilera et sera capable d’utiliser cette dépendance. La situation opposée, dans laquelle votre projet utilise Rust 2018 et une dépendance utilise Rust 2015, fonctionnera tout aussi bien.

Pour clarifier les choses : la plupart des fonctionnalités seront disponibles dans toutes les éditions. Les développeurs utilisant une édition quelconque de Rust continueront à voir des améliorations au fur et à mesure que de nouvelles éditions stables sont publiées. Cependant, dans certains cas, principalement quand de nouveaux mots-clés sont ajoutés, certaines fonctionnalités pourraient n’être disponibles que dans des éditions plus récentes. Vous aurez alors besoin de changer d’édition si vous souhaitez tirer parti de telles fonctionnalités.

Pour plus de détails, voyez le guide d’édition de Rust (The Rust Edition Guide). Il s’agit d’un livre complet qui recense les différences entre les éditions et qui explique comment mettre à jour votre code automatiquement vers une édition plus récente à l’aide de cargo fix.