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.
- 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.
So funktioniert async/await in Rust
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.
Änderungen bei match
und Attributes für Funktionsparameter
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:
- Rust als sichere Programmiersprache für systemnahe und parallele Software
- Task- und Datenparallelität mit Rust
- Jan-Erik Rediger: Entwickler aus allen Programmiersprachen kommen zu Rust
(bbo)