Rust

Unsafe Rust

Unsafe-blocks, raw pointers (*const T, *mut T), FFI, unsafe traits, Undefined Behavior (UB), safety-invarianten

20 gespreksvragen·
Senior
1

Welk keyword schakelt de superkrachten van de unsafe-modus in Rust in?

Antwoord

Het keyword unsafe ontgrendelt vijf mogelijkheden die in safe Rust verboden zijn: het dereferencen van raw pointers, het aanroepen van unsafe functies, toegang tot mutable static variabelen, het implementeren van unsafe traits en toegang tot union-velden. Dit block geeft de compiler aan dat de ontwikkelaar de verantwoordelijkheid neemt om memory safety te garanderen.

2

Hoeveel extra mogelijkheden ontgrendelt unsafe-code in vergelijking met safe Rust?

Antwoord

De unsafe-modus ontgrendelt precies vijf mogelijkheden: het dereferencen van raw pointers, het aanroepen van unsafe functies of methoden, het lezen of wijzigen van mutable static-variabelen, het implementeren van unsafe traits en het benaderen van union-velden. Deze vijf operaties zijn de enige verschillen tussen safe en unsafe Rust.

3

Wat is de juiste syntaxis om in Rust een immutable raw pointer naar een variabele te maken?

Antwoord

De syntaxis om een immutable raw pointer te maken is let ptr = &x as *const T. Het type *const T staat voor een immutable raw pointer. Het maken van raw pointers is safe, alleen de deref vereist een unsafe-blok. Je kunt ook impliciete coercion gebruiken met let ptr: *const T = &x.

4

Wat is het verschil tussen *const T en *mut T in Rust?

5

Waarom is het maken van raw pointers toegestaan in safe Rust terwijl het dereferencen ervan dat niet is?

+17 gespreksvragen

Beheers Rust voor je volgende gesprek

Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.

Begin gratis