
Unsafe Rust
Unsafe-blocks, raw pointers (*const T, *mut T), FFI, unsafe traits, Undefined Behavior (UB), safety-invarianten
1Welk keyword schakelt de superkrachten van de unsafe-modus in Rust in?
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.
2Hoeveel extra mogelijkheden ontgrendelt unsafe-code in vergelijking met safe Rust?
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.
3Wat is de juiste syntaxis om in Rust een immutable raw pointer naar een variabele te maken?
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.
Wat is het verschil tussen *const T en *mut T in Rust?
Waarom is het maken van raw pointers toegestaan in safe Rust terwijl het dereferencen ervan dat niet is?
+17 gespreksvragen
Andere Rust-sollicitatieonderwerpen
Rust-basis
Ownership & Borrowing
Structs & Enums
Foutafhandeling
Collecties
Modules & Packages
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macro's
Serde & serialisatie
Geavanceerde traits
Geavanceerde Lifetimes
Type System
Tokio & Async I/O
Prestatie-optimalisatie
Memory Management
Web Frameworks
Database Integration
Rust Design Patterns
Beheers Rust voor je volgende gesprek
Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.
Begin gratis