Smart pointer cenderung cukup sering menggunakan kode unsafe. Seperti disebutkan sebelumnya, mereka adalah alat umum untuk berinteraksi dengan level memori paling rendah di Rust.
Apa itu kode unsafe? Kode unsafe berperilaku persis seperti kode Rust normal, dengan pengecualian beberapa kemampuan yang tidak dapat dijamin oleh kompiler Rust.
Sebuah kemampuan utama dari kode unsafe adalah mendereferensikan sebuah raw pointer. Itu berarti mengambil sebuah raw pointer ke sebuah posisi di memori dan menyatakan "sebuah struktur data ada di sini!" dan mengubahnya menjadi sebuah representasi data yang dapat kamu gunakan (contoh *const u8 menjadi u8).
Rust tidak mempunyai cara untuk melacak makna dari setiap byte yang ditulis ke memori. Karena Rust tidak dapat memberikan jaminan tentang apa yang ada pada sebuah angka arbitrer yang digunakan sebagai raw pointer, ia menempatkan dereferensiasi di dalam sebuah blok unsafe { ... }.
Smart pointer mendereferensikan raw pointer secara ekstensif, tetapi mereka telah teruji dengan baik dalam apa yang mereka lakukan.