Rust

Unsafe Rust

Bloki unsafe, raw pointers (*const T, *mut T), FFI, traity unsafe, Undefined Behavior (UB), niezmienniki safety

20 pytań z rozmów·
Senior
1

Które słowo kluczowe włącza supermoce trybu unsafe w Rust?

Odpowiedź

Słowo kluczowe unsafe odblokowuje pięć możliwości zabronionych w safe Rust: dereferencjonowanie raw pointers, wywoływanie funkcji unsafe, dostęp do mutowalnych zmiennych statycznych, implementację traitów unsafe oraz dostęp do pól union. Ten blok sygnalizuje kompilatorowi, że deweloper bierze odpowiedzialność za zagwarantowanie memory safety.

2

Ile dodatkowych możliwości odblokowuje kod unsafe w porównaniu z safe Rust?

Odpowiedź

Tryb unsafe odblokowuje dokładnie pięć możliwości: dereferencjonowanie raw pointers, wywoływanie funkcji lub metod unsafe, dostęp lub modyfikację zmiennych static mutable, implementowanie traits unsafe oraz dostęp do pól union. Te pięć operacji to jedyne różnice między safe a unsafe Rust.

3

Jaka jest poprawna składnia tworzenia immutable raw pointer do zmiennej w Rust?

Odpowiedź

Składnia tworzenia immutable raw pointer to let ptr = &x as *const T. Typ *const T reprezentuje immutable raw pointer. Tworzenie raw pointers jest safe, jedynie deref wymaga bloku unsafe. Można też użyć niejawnej koercji za pomocą let ptr: *const T = &x.

4

Jaka jest różnica między *const T a *mut T w Rust?

5

Dlaczego tworzenie raw pointers jest dozwolone w safe Rust, podczas gdy ich dereferencjonowanie nie?

+17 pytań z rozmów

Opanuj Rust na następną rozmowę

Uzyskaj dostęp do wszystkich pytań, flashcards, testów technicznych, ćwiczeń code review i symulatorów rozmów.

Zacznij za darmo