6

Programmiersprache: Rust 1.58 erweitert Format-Strings und verschmälert den Pfad

 2 years ago
source link: https://www.heise.de/news/Programmiersprache-Rust-1-58-erweitert-Format-Strings-und-verschmaelert-den-Pfad-6326974.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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.

Anzeige

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

In dem mit Version 1.56 gestarteten Rust 2021 funktioniert die Einbindung der Identifier auch in panic!-Makros, das die Version 1.57 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. Die Macher der Programmiersprache Go haben 2021 die Sicherheitslücke ebenfalls erkannt. 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. 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 auf der Download-Seite separat verfügbar.

(rme)

comments_outline_white Kommentare lesen (66)

Zur Startseite


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK