Rust

async/await

async-Funktionen, Future-Trait, tokio-Runtime, async-Blöcke, .await-Syntax, Streams, Pin<T>, Abbruch, Executor-Patterns

22 Interview-Fragen·
Mid-Level
1

Was gibt eine mit dem Schlüsselwort async deklarierte Funktion in Rust zurück?

Antwort

Eine async-Funktion gibt automatisch einen Typ zurück, der den Future-Trait implementiert. Der Compiler wandelt den Funktionsrumpf in eine Zustandsmaschine um, die Future implementiert. Der Rückgabewert wird nicht sofort berechnet: Er wird erst berechnet, wenn der Future mit .await abgewartet oder von einer Runtime ausgeführt wird.

2

Was ist die Hauptaufgabe des Future-Traits in Rust?

Antwort

Der Future-Trait repräsentiert eine asynchrone Berechnung, die möglicherweise noch nicht abgeschlossen ist. Seine poll-Methode ermöglicht es dem Executor zu prüfen, ob der Future bereit ist (Poll::Ready) oder warten muss (Poll::Pending). Das ist der grundlegende Mechanismus der Asynchronität in Rust und ermöglicht eine nicht blockierende und effiziente Ausführung.

3

Warum ist eine Runtime wie tokio notwendig, um async-Code in Rust auszuführen?

Antwort

Rust enthält keine asynchrone Runtime in seiner Standardbibliothek, um die Sprache minimal zu halten und die Wahl der Runtime je nach Bedarf zu ermöglichen. Eine Runtime wie tokio stellt den Executor bereit, der Futures pollt, den Scheduler zur Verwaltung von Tasks sowie asynchrone I/O. Ohne eine Runtime würden Futures niemals ausgeführt.

4

Was ist der Unterschied zwischen einem async block und einer async function in Rust?

5

Was passiert, wenn man .await auf einen Future in Rust anwendet?

+19 Interview-Fragen

Meistere Rust für dein nächstes Interview

Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.

Kostenlos starten