Async und Futures
Future in Nicht-Async-Code
Abschnitt betitelt „Future in Nicht-Async-Code“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.
Async-Funktion Typ-Signatur
Abschnitt betitelt „Async-Funktion Typ-Signatur“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.