Rust'ta düşük bellek seviyeleriyle etkileşebilmek için çoğunlula güvenli olmayan kod bloklarından yararlanıldığından, akıllı işaretçiler bu kodları sıklıkla kullanırlar.
Daha önce de kabaca değindiğimiz güvenli olmayan kodlar, derleyicinin garanti edemediği birkaç özellik dışında, tam olarak normal Rust kodu gibi davranırlar.
Güvenli olmayan kodun ana özelliği, bir ham işaretçinin referansını kaldırmaktır. Bu, ham işaretçiyi bir bellek konumuna götürerek: "Burada bir veri yapısı var." şeklinde bildirim almak ve bu veriyi, örneğin u8
için *const u8
olarak kullanabileceğimiz başka bir veri türü temsiline dönüştürmek demektir. Rust'ta, belleğe yazılan her baytın anlamını takip etmenin bir yolu olmadığından ve Rust, ham işaretçi olarak kullanılan rasgele bir sayının arkasında tam olarak neyin bulunduğunu garanti edemediğinden, bu referansın güvensiz olarak işaretlenmiş bir unsafe {...}
bloğunun içine konulmasını bekler.
Akıllı işaretçiler ham işaretçi referanslarını büyük ölçüde kaldırmalarına rağmen, yaptıkları işleri başarıyla sonuçlandırırlar.