Rust

Unsafe Rust

Blocchi unsafe, raw pointers (*const T, *mut T), FFI, trait unsafe, Undefined Behavior (UB), invarianti di safety

20 domande da colloquio·
Senior
1

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.

2

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.

3

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.

4

Qual è la differenza tra *const T e *mut T in Rust?

5

Perché creare raw pointers è consentito in safe Rust mentre dereferenziarli no?

+17 domande da colloquio

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