
Unsafe Rust
Blocchi unsafe, raw pointers (*const T, *mut T), FFI, trait unsafe, Undefined Behavior (UB), invarianti di safety
1Quale parola chiave abilita i superpoteri della modalità unsafe in Rust?
Quale parola chiave abilita i superpoteri della modalità unsafe in Rust?
Risposta
La parola chiave unsafe sblocca cinque capacità proibite in safe Rust: dereferenziare raw pointers, chiamare funzioni unsafe, accedere a variabili statiche mutabili, implementare trait unsafe e accedere ai campi delle union. Questo blocco segnala al compilatore che lo sviluppatore si assume la responsabilità di garantire la memory safety.
2Quante capacità aggiuntive sblocca il codice unsafe rispetto a safe Rust?
Quante capacità aggiuntive sblocca il codice unsafe rispetto a safe Rust?
Risposta
La modalità unsafe sblocca esattamente cinque capacità: dereferenziare i raw pointers, chiamare funzioni o metodi unsafe, accedere o modificare variabili mutabili statiche, implementare traits unsafe e accedere ai campi delle unions. Queste cinque operazioni sono le uniche differenze tra safe e unsafe Rust.
3Qual è la sintassi corretta per creare un raw pointer immutabile verso una variabile in Rust?
Qual è la sintassi corretta per creare un raw pointer immutabile verso una variabile in Rust?
Risposta
La sintassi per creare un raw pointer immutabile è let ptr = &x as *const T. Il tipo *const T rappresenta un raw pointer immutabile. Creare raw pointers è safe, solo il deref richiede un blocco unsafe. È possibile usare anche la coercion implicita con let ptr: *const T = &x.
Qual è la differenza tra *const T e *mut T in Rust?
Perché creare raw pointers è consentito in safe Rust mentre dereferenziarli no?
+17 domande da colloquio
Altri argomenti di colloquio Rust
Fondamenti di Rust
Ownership & Borrowing
Structs & Enums
Gestione degli errori
Collezioni
Moduli e package
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macro
Serde e serializzazione
Trait avanzati
Lifetime Avanzati
Type System
Tokio & Async I/O
Ottimizzazione delle Prestazioni
Memory Management
Web Frameworks
Database Integration
Design Pattern in Rust
Padroneggia Rust per il tuo prossimo colloquio
Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.
Inizia gratis