Zum Inhalt springen

Async und Futures

Wenn Sie in nicht-asynchronem Code auf ein Future warten möchten, sollten Sie welche der folgenden Aktionen ausführen?

Rust erlaubt Ihnen nicht, .await außerhalb von async-Blöcken oder -Funktionen zu verwenden. Rust verfügt auch über keine eingebaute Async-Runtime. Sie sollten eine Async-Runtime eines Drittanbieters wie tokio oder trpl verwenden.


In welche Typ-Signatur wird die untenstehende Async-Funktion desugared?

async fn calculate(nums: &[i32]) -> i32 {
/* ... */
}

Eine Async-Funktion gibt einen anonymen Typ zurück, der das Future-Trait implementiert, dessen Ausgabe der Rückgabetyp der Funktion ist. Hier wird dies als impl Future<Output = i32> dargestellt. Das Future erfasst alle Lebenszeiten in den Argumenten der Funktion. Daher hat der zurückgegebene Typ die Bound + 'a und der Eingabe-Slice hat den Typ &'a [i32]. Dies weist darauf hin, dass der Slice mindestens so lange leben muss wie das Future, das ihn erfasst.