Przewodnik po Języku Rust Spis Treści

Inteligentny Kod Unsafe

Inteligentne wskaźniki dość często korzystają z kodu unsafe. Jak wspomniano wcześniej, są one popularnym narzędziem do interakcji z najniższymi poziomami pamięci w Ruście.

Czym jest kod unsafe? Kod unsafe zachowuje się dokładnie tak samo jak zwykły kod Rusta, z wyjątkiem kilku możliwości, co do których kompilator Rusta nie jest w stanie zagwarantować bezpieczeństwa.

Podstawową możliwością kodu unsafe jest dereferencja surowego wskaźnika. Oznacza to wzięcie surowego wskaźnika wskazującego na pozycję w pamięci i zadeklarowanie: "tutaj istnieje struktura danych!", a następnie przekształcenie jej w reprezentację danych, których możesz użyć (np. zamiana *const u8 na u8).

Rust nie ma sposobu na śledzenie znaczenia każdego bajtu zapisanego do pamięci. Ponieważ Rust nie może zagwarantować, co istnieje pod dowolną liczbą użytą jako surowy wskaźnik, umieszcza on dereferencję w bloku unsafe { ... }.

Inteligentne wskaźniki dereferencjonują surowe wskaźniki na dużą skalę, ale są dobrze sprawdzone w tym, co robią.