Rust

Unsafe Rust

Unsafe-Blöcke, Raw Pointers (*const T, *mut T), FFI, unsafe Traits, Undefined Behavior (UB), Safety-Invarianten

20 Interview-Fragen·
Senior
1

Welches Schlüsselwort aktiviert die Superkräfte des unsafe-Modus in Rust?

Antwort

Das Schlüsselwort unsafe schaltet fünf in safe Rust verbotene Fähigkeiten frei: das Dereferenzieren von Raw Pointers, das Aufrufen von unsafe Funktionen, den Zugriff auf veränderbare statische Variablen, das Implementieren von unsafe Traits und den Zugriff auf Union-Felder. Dieser Block signalisiert dem Compiler, dass der Entwickler die Verantwortung für die Gewährleistung der Memory Safety übernimmt.

2

Wie viele zusätzliche Fähigkeiten schaltet unsafe-Code im Vergleich zu safe Rust frei?

Antwort

Der unsafe-Modus schaltet genau fünf Fähigkeiten frei: das Dereferenzieren von raw pointers, das Aufrufen von unsafe Funktionen oder Methoden, das Lesen oder Ändern veränderlicher statischer Variablen, das Implementieren von unsafe traits und den Zugriff auf union-Felder. Diese fünf Operationen sind die einzigen Unterschiede zwischen safe und unsafe Rust.

3

Wie lautet die korrekte Syntax, um in Rust einen immutable raw pointer auf eine Variable zu erstellen?

Antwort

Die Syntax zum Erstellen eines immutable raw pointer lautet let ptr = &x as *const T. Der Typ *const T steht für einen immutable raw pointer. Das Erstellen von raw pointers ist safe, nur der deref erfordert einen unsafe-Block. Man kann auch die implizite Coercion mit let ptr: *const T = &x verwenden.

4

Was ist der Unterschied zwischen *const T und *mut T in Rust?

5

Warum ist das Erstellen von raw pointers in safe Rust erlaubt, das Dereferenzieren jedoch nicht?

+17 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