
Unsafe Rust
Unsafe blocks, raw pointers (*const T, *mut T), FFI, unsafe traits, Undefined Behavior (UB), safety invariants
1Quel mot-clé permet d'activer les super-pouvoirs du mode unsafe en Rust ?
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.
2Combien de capacités supplémentaires le code unsafe débloque-t-il par rapport au safe Rust ?
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.
3Quelle est la syntaxe correcte pour créer un raw pointer immutable vers une variable en Rust ?
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.
Quelle est la différence entre *const T et *mut T en Rust ?
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
Autres sujets d'entretien Rust
Les bases de Rust
Ownership & Borrowing
Structs & Enums
Gestion des erreurs
Collections
Modules & Packages
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Macros
Serde & Serialization
Traits Avancés
Lifetimes Avancés
Type System
Tokio & Async I/O
Optimisation de Performance
Memory Management
Web Frameworks
Database Integration
Design Patterns Rust
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