Das Warten hat ein Ende: Programmiersprache Rust 1.39 erhält async/await-Feature

Die neue Version von Mozillas Programmiersprache Rust kann dank async/await nun asynchrone, nichtblockende Funktionen verwenden.

In Pocket speichern vorlesen Druckansicht 19 Kommentare lesen
Das Warten hat ein Ende: Rust 1.39 erhält planmäßig async/await-Feature
Lesezeit: 2 Min.
Von
  • Björn Bohn

Pünktlich zum geplanten Erscheinungsdatum hat Mozilla mit Rust 1.39 die neue Version der Programmiersprache veröffentlicht. Die größte Änderung ist dabei keine Überraschung mehr: Wie bereits vor gut einem Monat angekündigt, erhält das Pattern async/await Einzug in die Syntax der Sprache. Damit reiht sich Rust neben Sprachen wie C#, Python, Dart, Kotlin oder JavaScript ein, die das Konzept der nebenläufigen Programmierung bereits umgesetzt haben. Darüber hinaus haben die Entwickler an den match-Ausdrücken gearbeitet und das Zusammenspiel zwischen Attributes und Funktionsparametern verbessert.

Vereinfacht gesagt dient async/await dazu, Funktionen zu pausieren und später wieder aufzugreifen. So können Programme beispielsweise Code ausführen, während der ursprüngliche Code auf dessen Ausführung wartet. Um das Feature zu nutzen, müssen Entwickler async fn anstelle von fn schreiben:

async fn first_function() -> u32 { .. }

Die Funktion hat keine direkte Auswirkung, sondern gibt ein Future zurück, das darauf wartet, ausgeführt zu werden. Dazu dient dann der Operator .await:

async fn another_function() {
// Create the future:
let future = first_function();

// Await the future, which will execute it (and suspend
// this function if we encounter a need to wait for I/O):
let result: u32 = future.await;
...
}

Anders als bei anderen Sprachen schreibt man in Rust future.await statt await future, da dies laut den Rust-Entwicklern besser mit dem ?-Operator harmoniert. Weitere Informationen zu async/await bietet ein spezieller Blogbeitrag des Rust-Teams.

Zuvor hatte Rust es nicht gestattet, gemeinsame Referenzen auf by-move-Bindings in den if-Guards von match-Ausdrücken zu verwenden. Folglich kam es bei einigen Codebeispielen zu Fehlern, die Rust in Version 1.39 nun aber nicht mehr aufwirft. Dadurch erhofft sich das Rust-Team eine konsistentere Nutzererfahrung mit match.

Außerdem können Attribute in Rust 1.39 nun auf Funktionen, Closures und Function Pointer angewendet werden. Eine vollständige Liste der Neuerungen findet sich im Blogbeitrag zum Release.

Siehe dazu auf heise Developer:

(bbo)