Programmiersprache: Rust 1.58 erweitert Format-Strings und verschmälert den Pfad
![](https://heise.cloudimg.io/width/700/q75.png-lossy-75.webp-lossy-75.foil1/_www-heise-de_/imgs/18/3/2/5/6/3/7/0/Rust.jpg-7e8feee13c67deee.jpeg)
(Bild: Callum Bainbridge / Shutterstock.com)
Argumente in Format-Strings dürfen im Umfeld stehen. Unter Windows ignoriert Rust das aktuelle Verzeichnis beim Suchen nach ausführbaren Dateien.
Das Rust-Team hat im planmäßigen Sechswochentakt Version 1.58 der Programmiersprache veröffentlicht. Das dritte Release in der Edition Rust 2021 bringt nur wenige Neuerungen mit. Nennenswert ist vor allem die Erweiterung von Format-Strings und die Anpassungen des Struct Command
unter Windows.
Aus der weiteren Umgebung
Format-Strings können Argumente aus dem Umfeld über einen in geschweiften Klammern eingefassten Identifier übernehmen. Bisher mussten diese direkt in der Anweisung stehen und über ihre Position oder ihren Namen identifizierbar sein. Mit Rust 1.58 können die Argumente auch zuvor im selben Scope definiert sein, wie in folgendem kleinen Beispiel aus dem Rust-Blog:
// 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
Die Identifier lassen sich nicht nur für Textteile, sondern auch für Formatierungsparamter wie width$
verwenden. Rust verarbeitet allerdings nur reine Identifier. Wer Ausdrücke oder andere komplexe Einbindungen in Format-Strings nutzen will, muss sie zuvor einem Identifier zuweisen oder den Ausdruck wie bei der bisherigen Vorgehensweise direkt in die Anweisung einbinden.
Lesen Sie auch
Auf Nummer sicher: Sicheres Programmieren mit Rust
In dem mit Version 1.56 gestarteten Rust 2021 [1] funktioniert die Einbindung der Identifier auch in panic!
-Makros, das die Version 1.57 [2] für den erweiterten Einsatz stabilisiert hatte. Rust 2015 und 2018 verarbeiten den Inhalt von panic!("{ident}")
dagegen nicht als Format-, sondern als unformatierten String. Der Compiler spuckt daher im Zusammenspiel mit den älteren Editionen eine Warnung aus, dass der Befehl vermutlich nicht den gewünschten Effekt hat.
Ignoriere das aktuelle Verzeichnis!
Unter Windows verschmälert das aktuelle Rust-Release den Suchpfad für ausführbare Dateien. Das Struct std::process::Command
bezieht nicht mehr das aktuelle Verzeichnis mit ein. Das Verhalten ist der historischen Arbeitsweise der createProcess
-API unter Windows geschuldet.
Auch die Eingabeaufforderung unter Windows nimmt jeweils das aktuelle Verzeichnis in den Pfad, die PowerShell dagegen aus Sicherheitsgründen nicht [3]. Die Macher der Programmiersprache Go haben 2021 die Sicherheitslücke ebenfalls erkannt [4]. Seitdem ignoriert der Befehl go-get
das aktuelle Verzeichnis unter Windows.
Mit der Anpassung entfernt Rust noch eine weitere Altlast aus dem Suchpfad und bezieht das 16-bit-Windows-Systemverzeichnis nicht mehr mit ein.
Weitere Neuerungen in Rust 1.58 wie der erweiterte Einsatz von #[must_use]
in der Standardbibliothek lassen sich dem Rust-Blog entnehmen [5]. Wie üblich können Entwicklerinnen und Entwickler, die Rust bereits installiert haben, das aktuelle Release über rustup update stable
herunterladen. Für diejenigen, die noch kein Rust verwenden, ist das rustup-Tool [6] auf der Download-Seite separat verfügbar.
(rme [7])
URL dieses Artikels:
https://www.heise.de/-6326974
Links in diesem Artikel:
[1] https://www.heise.de/news/Programmiersprache-Neue-Edition-Rust-2021-ist-flexibler-bei-anonymen-Funktionen-6225981.html
[2] https://www.heise.de/news/Programmiersprache-Rust-1-57-Don-t-Panic-6283665.html
[3] https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_command_precedence?view=powershell-7.2
[4] https://www.heise.de/news/Programmiersprache-Go-Team-stopft-Sicherheitsluecke-in-go-get-Befehl-5037628.html
[5] https://blog.rust-lang.org/2022/01/13/Rust-1.58.0.html
[6] https://www.rust-lang.org/tools/install
[7] mailto:rme@ix.de
Copyright © 2022 Heise Medien