
Unsafe Rust
Unsafe-блоки, raw pointers (*const T, *mut T), FFI, unsafe-трейти, Undefined Behavior (UB), інваріанти safety
1Яке ключове слово активує суперсили режиму unsafe у Rust?
Яке ключове слово активує суперсили режиму unsafe у Rust?
Відповідь
Ключове слово unsafe розблоковує п'ять можливостей, заборонених у safe Rust: розіменування raw pointers, виклик unsafe-функцій, доступ до мутабельних статичних змінних, реалізацію unsafe-трейтів та доступ до полів union. Цей блок сигналізує компілятору, що розробник бере на себе відповідальність за гарантування memory safety.
2Скільки додаткових можливостей розблоковує код unsafe порівняно з safe Rust?
Скільки додаткових можливостей розблоковує код unsafe порівняно з safe Rust?
Відповідь
Режим unsafe розблоковує рівно п'ять можливостей: розіменування raw pointers, виклик unsafe функцій або методів, доступ або зміну змінюваних static змінних, реалізацію unsafe traits та доступ до полів union. Ці п'ять операцій є єдиними відмінностями між safe і unsafe Rust.
3Який правильний синтаксис для створення immutable raw pointer на змінну в Rust?
Який правильний синтаксис для створення immutable raw pointer на змінну в Rust?
Відповідь
Синтаксис створення immutable raw pointer — це let ptr = &x as *const T. Тип *const T представляє immutable raw pointer. Створення raw pointers є safe, лише deref потребує блоку unsafe. Також можна використати неявне приведення з let ptr: *const T = &x.
Яка різниця між *const T і *mut T у Rust?
Чому створення raw pointers дозволено в safe Rust, тоді як їх розіменування — ні?
+17 питань зі співбесід
Інші теми співбесід Rust
Основи Rust
Ownership & Borrowing
Structs & Enums
Обробка помилок
Колекції
Модулі та пакети
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Макроси
Serde та серіалізація
Просунуті trait'и
Просунуті Lifetimes
Type System
Tokio & Async I/O
Оптимізація продуктивності
Memory Management
Web Frameworks
Database Integration
Патерни проєктування Rust
Опануй Rust для наступної співбесіди
Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.
Почни безкоштовно