Programmiersprachen: Rust 1.22 bringt syntaktische Feinheiten

Mozillas Programmiersprache erlaubt nun die Kombination des ? Operator mit dem Option-Typ. Außerdem dürfen neuerdings auch Konstanten und statische Elemente eine Drop-Methode besitzen.

In Pocket speichern vorlesen Druckansicht
Programmiersprachen: Rust 1.22 bringt syntaktische Feinheiten
Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag

Mozilla hat der auf Nebenläufigkeit und Sicherheit ausgerichteten Programmiersprache Rust in Version 1.22 vor allem syntaktischen Zucker mitgegeben. Die Neuerungen dienen in erster Linie dazu, den Code kompakter und übersichtlicher zu halten. Außerdem hat der Compiler Optimierungen beim Übersetzen im Debug-Modus erhalten, und es gibt ein paar Stabilisierungsmaßnahmen für die Libraries.

Neuerdings dürfen Entwickler den ?-Operator auch in Kombination mit Optional verwenden. Das Team hatte ? in Rust 1.13 als Abkürzung für die Fehlerbehandlung eingeführt, um try!-Blöcke zu ersetzen. Allerdings ließ sich der Operator bisher nicht im Zusammenspiel mit dem Option<T>-Enumerator verwenden, der entweder den Wert None oder Some(value) aufweist. Bei Letzterem ist value der Wert vom Typ T, während Ersteres anzeigt, dass es keinen gültigen Wert gibt. Durch die Neuerung ist folgender Code von der Rust-Site nun gültig:

fn try_option_some() -> Option<u8> {
let val = Some(1)?;
Some(val)
}
assert_eq!(try_option_some(), Some(1));

fn try_option_none() -> Option<u8> {
let val = None?;
Some(val)
}
assert_eq!(try_option_none(), None);

Die zweite syntaktische Neuerung ist ebenfalls eine Kombination von Vorhandenem. So dürfen nun auch const- und static-Elemente eine Drop-Methode enthalten, die für Aufräumarbeiten zuständig ist und auch als Destructor bezeichnet wird. Derzeit hat die Kombination wenig praktischen Nutzen, aber das Team plant wohl durch Verbesserungen bei Berechnungen während des Kompilierens mehr Einsatzmöglichkeiten beziehungsweise Optimierungen im Zusammenspiel mit const und static.

Ebenfalls neu ist, dass nun für primitive Typen Zuweisungen über Operationen wie += oder -= in der Kombination aus T und &T funktionieren. Folgender Code aus dem Blogbeitrag ist somit ab Rust 1.22 erlaubt:

let mut x = 2;
let y = &8;

// this didn't work, but now does
x += y;

Zwei Compiler-Optimierungen sollten das Kompilieren im Debug-Modus beschleunigen. Außerdem hat das Team die APIs der Libraries stabilisiert. Kurz nach der Veröffentlichung von Rust 1.22.0 haben die Macher 1.22.1 nachgeschoben, da sie in letzter Sekunden ein Problem im Zusammenspiel mit macOS High Sierra festgestellt hatten. Der Patch betrifft nur dieses Betriebssystem und nicht rustc, sondern den Paketmanager Cargo.

Die vollständige Liste der Neuerungen findet sich in den Release Notes. Der Sourcecode liegt quelloffen im GitHub-Repository, und Information zum Installieren von Binaries auf Linux, macOS und Windows stehen in der Rust-Dokumentation. (rme)