Rust

Unsafe Rust

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

20 questions d'entretien·
Senior
1

Quel mot-clé permet d'activer les super-pouvoirs du mode unsafe en Rust ?

Réponse

Le mot-clé unsafe permet d'accéder à cinq capacités interdites en safe Rust : déréférencer des raw pointers, appeler des fonctions unsafe, accéder à des variables mutables statiques, implémenter des traits unsafe et accéder aux champs de unions. Ce bloc signale au compilateur que le développeur prend la responsabilité de garantir la memory safety.

2

Combien de capacités supplémentaires le code unsafe débloque-t-il par rapport au safe Rust ?

Réponse

Le mode unsafe débloque exactement cinq capacités : déréférencer des raw pointers, appeler des fonctions ou méthodes unsafe, accéder ou modifier des variables mutables statiques, implémenter des traits unsafe, et accéder aux champs de unions. Ces cinq opérations sont les seules différences entre safe et unsafe Rust.

3

Quelle est la syntaxe correcte pour créer un raw pointer immutable vers une variable en Rust ?

Réponse

La syntaxe pour créer un raw pointer immutable est let ptr = &x as *const T. Le type *const T représente un pointeur brut immutable. La création de raw pointers est safe, seul le déréférencement nécessite un bloc unsafe. On peut aussi utiliser la coercion implicite avec let ptr: *const T = &x.

4

Quelle est la différence entre *const T et *mut T en Rust ?

5

Pourquoi la création de raw pointers est-elle autorisée en safe Rust alors que le déréférencement ne l'est pas ?

+17 questions d'entretien

Maîtrise Rust pour ton prochain entretien

Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.

Commencer gratuitement