AccueilActualités informatiqueLangage de programmation : Rust 1.58 étend les chaînes de format et...

Langage de programmation : Rust 1.58 étend les chaînes de format et rétrécit le chemin

L’équipe Rust a publié la version 1.58 du langage de programmation au rythme prévu de six semaines. La troisième version de l’édition Rust 2021 n’apporte que peu de nouveautés. On notera surtout l’extension des chaînes de format et les adaptations du Structur. Command sous Windows.

 

Sommaire

Les chaînes de format peuvent prendre des arguments de l’environnement via un identifiant encadré par des accolades. Jusqu’à présent, ils devaient se trouver directement dans l’instruction et être identifiables par leur position ou leur nom. Avec Rust 1.58, les arguments peuvent aussi être définis au préalable dans le même scope, comme dans le petit exemple suivant tiré du blog Rust :

 

// Neu in Rust 1.58:

let person = get_person();
// ...
println!("Hello, {person}!"); // captures the local `person`

// Schon vorher erlaubt:

println!("Hello, {}!", get_person());        // implicit position
println!("Hello, {0}!", get_person());       // explicit index
println!("Hello, {person}!", person = get_person()); // named

 

Les identifiants peuvent être utilisés non seulement pour des parties de texte, mais aussi pour des paramètres de formatage comme width$ sont utilisés. Rust ne traite toutefois que les identificateurs purs. Si l’on veut utiliser des expressions ou d’autres intégrations complexes dans des chaînes de format, il faut au préalable les attribuer à un identifiant ou intégrer l’expression directement dans l’instruction, comme dans la procédure précédente.

Dans Rust 2021, lancé avec la version 1.56, l’intégration des identifiants fonctionne aussi en panic!-que la version 1.57 avait stabilisé pour une utilisation étendue. Rust 2015 et 2018 traitent le contenu de panic!("{ident}") n’est pas un format, mais une chaîne de caractères non formatée. Le compilateur crache donc, en interaction avec les anciennes éditions, un avertissement indiquant que la commande n’a probablement pas l’effet souhaité.

 

Sous Windows, la dernière version de Rust rétrécit le chemin de recherche des fichiers exécutables. La structure std::process::Command n’inclut plus le répertoire actuel. Ce comportement est conforme au fonctionnement historique de la createProcess-sous Windows.

L’invite de commande sous Windows prend également à chaque fois le répertoire actuel dans le chemin, alors que PowerShell ne le fait pas pour des raisons de sécurité. Les créateurs du langage de programmation Go ont également reconnu la faille de sécurité en 2021. Depuis lors, la commande go-get ne tient pas compte du répertoire actuel sous Windows.

Avec cette adaptation, Rust supprime encore un autre héritage du chemin de recherche et n’inclut plus le répertoire système 16 bits de Windows.

D’autres nouveautés dans Rust 1.58 comme l’utilisation étendue de #[must_use] dans la bibliothèque standard peuvent être trouvées sur le blog de Rust. Comme d’habitude, les développeurs qui ont déjà installé Rust peuvent télécharger la dernière version via le lien suivant rustup update stable pour la télécharger. Pour ceux qui n’utilisent pas encore Rust, l’outil rustup est disponible séparément sur la page de téléchargement.

Plus d'articles