La version 1.35.0 de Rust est disponible
avec les traits de fermeture FnOnce, FnMut et Fn pour Box
Après la sortie de la version 1.34.0 il y a environ deux mois, l’équipe du développement du langage de programmation Rust vient d’annoncer la disponibilité de sa version 1.35.0. Le point fort de cette version est l'implémentation des traits de fermeture FnOnce, FnMut et Fn pour Box
Pour rappel, Rust est un langage de programmation compilé multiparadigme conçu et développé par Mozilla Research. Il a été conçu pour être « un langage sécurisé, concurrent, pratique », supportant les styles de programmation purement fonctionnel, modèle d'acteur, procédural, ainsi qu'orienté objet sous certains aspects. La version 1.34.0 est apparue en avril dernier avec l’opérateur “?” pour les tests de documentation, les registres alternatifs “cargo” et “fn before_exec” a été déprécié en faveur de “unsafe fn pre_exec”.
Dans le cas de l’opérateur “?” dans les tests de documentation, la RFC 1937 proposait d'ajouter un support pour l'utilisation de l’opérateur ? dans les fonctions fn main(), # et doctests, leur permettant de renvoyer Option ou Result, avec des valeurs d'erreur générant un code de sortie non nul dans le cas de fn main(), et un échec de test dans le cas des tests. Les changements les plus notables dans cette version concernent l'implémentation des traits de fermeture FnOnce, FnMut et Fn, respectivement pour Box
Les traits de fermeture Fn* mis en œuvre pour Box
Dans Rust 1.35.0, les traits de fermeture FnOnce, FnMut et Fn sont maintenant mis en œuvre respectivement pour Box
Ceci était dû en fin de compte à une limitation dans la capacité du compilateur à raisonner sur de telles implémentations, qui a depuis été corrigée avec l'introduction de sections locales non dimensionnées. Avec cette version, vous pouvez désormais utiliser des fonctions encadrées dans des endroits où des éléments implémentant un trait de fonction sont attendus. De plus, vous pouvez maintenant forcer la fermeture des indicateurs fn dangereux.
478459
Appelez désormais dbg!() sans arguments
Pour le bénéfice de tous les “débogueurs d'impression” occasionnels et fréquents, Rust 1.32.0 a vu la sortie de la macro dbg!. Pour récapituler, la macro vous permet d'inspecter rapidement la valeur d'une expression avec un contexte. La macro fonctionne en utilisant l’implémentation Debug du type de l’expression donnée pour imprimer la valeur sur stderr avec l’emplacement source de l’appel de macro ainsi que le code source de l’expression. Vous pouvez désormais appeler dbg! sans lui passer aucun argument. Ceci est utile pour tracer toutes les différentes branches de votre application.
Dans la version 1.35.0 du langage, un certain nombre d'API et de bibliothèques sont devenues stables. Quelques autres modifications et de nouvelles implémentations ont également été apportées. Certaines de ces nouveautés sont présentées comme ci-dessous :
fn main() {
assert_eq!(3.5_f32.copysign(-0.42), -3.5);
};
fn main() {
if (0..=10).contains(&5) {
println!("Five is included in zero to ten.");
}
};
Dans cette version de Rust, Clippy, la collection de lint pour attraper les erreurs courantes et améliorer votre code Rust, a ajouté un nouveau lint dénommé drop_bounds. Cette peluche se déclenche lorsque vous ajoutez une liaison T: Drop à une fonction générique. Par exemple : fn foo
Source : Billet de blog
Et vous ?
:fleche: Qu'en pensez-vous ?
:fleche: Quelle fonctionnalité vous a le plus attiré dans la version 1.35.0 de Rust ?
:fleche: Quelles autres fonctionnalités souhaiteriez-vous avoir pour la prochaine version du langage ?
Voir aussi
:fleche: Rust 1.34.0 est disponible en version stable et apporte le support de l'opérateur "?" dans les tests de documentation
:fleche: L'équipe de npm choisit Rust pour gérer les goulots d'étranglement liés au CPU au détriment de Go, C, C++ et Java. Voici les raisons de ce choix
:fleche: Rust, en bref
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.