
Unsafe Rust
Bloki unsafe, raw pointers (*const T, *mut T), FFI, traity unsafe, Undefined Behavior (UB), niezmienniki safety
1Które słowo kluczowe włącza supermoce trybu unsafe w Rust?
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.
2Ile dodatkowych możliwości odblokowuje kod unsafe w porównaniu z safe Rust?
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.
3Jaka jest poprawna składnia tworzenia immutable raw pointer do zmiennej w Rust?
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.
Jaka jest różnica między *const T a *mut T w Rust?
Dlaczego tworzenie raw pointers jest dozwolone w safe Rust, podczas gdy ich dereferencjonowanie nie?
+17 pytań z rozmów
Inne tematy rekrutacyjne Rust
Podstawy Rusta
Ownership & Borrowing
Structs & Enums
Obsługa błędów
Kolekcje
Moduły i pakiety
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
Makra
Serde i serializacja
Zaawansowane traity
Zaawansowane Lifetime
Type System
Tokio & Async I/O
Optymalizacja Wydajności
Memory Management
Web Frameworks
Database Integration
Wzorce projektowe w Rust
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