Ces types « Lazy » ou « paresseux » ajoutés à la dernière version 1.80 dévoilée le 25 juillet du célèbre langage de programmation à mémoire sécurisée, retardent l'initialisation des données jusqu'à leur premier accès. Les développeurs disposant d'une version précédente de Rust installée via rustup peuvent mettre à jour la version 1.80 en exécutant la commande $ rustup update stable.

Les types LazyCell et LazyLock, qui retardent l'initialisation des valeurs jusqu'au premier accès, sont semblables aux types OnceCell et OnceLock stabilisés dans Rust 1.70, mais avec la fonction d'initialisation incluse dans la cellule. Ceci complète la stabilisation de la fonctionnalité adoptée dans la bibliothèque standard à partir des crates lazy_static et once_cell. LazyLock est l'option thread-safe, adaptée pour des choses comme les valeurs static. « LazyCell ne dispose pas de la synchronisation des threads, et n'implémente donc pas sync, qui est nécessaire pour les valeurs static, mais qui peut toujours être utilisé dans les valeurs statiques thread_local ! », comme l’a indiqué l’équipe de Rust.

Des plages plus fonctionnelles

Toujours dans Rust 1.80, les motifs ranged peuvent désormais utiliser des extrémités exclusives, écrites a..b ou ..b, de manière similaire à l’expression de types Range et RangeTo. Les plages exclusives ont été implémentées en tant que fonctionnalité instable dans Rust. L'équipe de Rust a expliqué que le problème du blocage, c'est qu’il pouvait ajouter de la confusion et accroître le risque d'erreurs de type « off-by-one » dans les modèles. Avec Rust 1.80, la vérification de l'exhaustivité a été améliorée pour mieux détecter les lacunes dans la correspondance des motifs, et les nouvelles lignes non_contiguous_range_endpoints et overlapping_range_endpoints faciliteront la détection des cas où les développeurs pourraient vouloir passer des motifs exclusifs à des motifs inclusifs, ou inversement.

Dans Rust 1.79, rustc stabilisait un drapeau --check-cfg. À présent, Cargo 1.80 active ces vérifications pour tous les noms et valeurs de cfg qu'il connaît (en plus des noms et valeurs bien connus de rustc). Cela inclut les noms des fonctionnalités dans Cargo.toml ainsi que la nouvelle sortie cargo::rustc-check-cfg des scripts de compilation. Rust 1.80 stabilise également de nombreuses API.