Rust

Unsafe Rust

Unsafe-блоки, raw pointers (*const T, *mut T), FFI, unsafe-трейти, Undefined Behavior (UB), інваріанти safety

20 питань зі співбесід·
Senior
1

Яке ключове слово активує суперсили режиму unsafe у Rust?

Відповідь

Ключове слово unsafe розблоковує п'ять можливостей, заборонених у safe Rust: розіменування raw pointers, виклик unsafe-функцій, доступ до мутабельних статичних змінних, реалізацію unsafe-трейтів та доступ до полів union. Цей блок сигналізує компілятору, що розробник бере на себе відповідальність за гарантування memory safety.

2

Скільки додаткових можливостей розблоковує код unsafe порівняно з safe Rust?

Відповідь

Режим unsafe розблоковує рівно п'ять можливостей: розіменування raw pointers, виклик unsafe функцій або методів, доступ або зміну змінюваних static змінних, реалізацію unsafe traits та доступ до полів union. Ці п'ять операцій є єдиними відмінностями між safe і unsafe Rust.

3

Який правильний синтаксис для створення 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.

4

Яка різниця між *const T і *mut T у Rust?

5

Чому створення raw pointers дозволено в safe Rust, тоді як їх розіменування — ні?

+17 питань зі співбесід

Опануй Rust для наступної співбесіди

Отримай доступ до всіх питань, flashcards, технічних тестів, вправ code review та симуляторів співбесід.

Почни безкоштовно