Smart Pointer verwenden tendenziell recht häufig unsafe-Code. Wie bereits erwähnt, sind sie gängige Werkzeuge für die Interaktion mit den untersten Speicherebenen in Rust.
Was ist Unsafe-Code? Unsafe-Code verhält sich genau wie normaler Rust-Code, mit der Ausnahme einiger Fähigkeiten, über die der Rust-Compiler keine Garantien abgeben kann.
Eine der wichtigsten Fähigkeiten von Unsafe-Code ist das Dereferenzieren eines rohen Zeigers. Das bedeutet, einen rohen Zeiger auf eine Position im Speicher zu nehmen und zu erklären "hier existiert eine Datenstruktur!" und ihn in eine nutzbare Darstellung von Daten umzuwandeln (z. B. *const u8 in u8).
Rust hat keine Möglichkeit, die Bedeutung jedes Bytes nachzuverfolgen, das in den Speicher geschrieben wird. Weil Rust keine Garantien darüber abgeben kann, was an einer beliebigen Zahl existiert, die als roher Zeiger verwendet wird, setzt es das Dereferenzieren in einen unsafe { ... }-Block.
Smart Pointer dereferenzieren rohe Zeiger ausgiebig, aber sie sind in dem, was sie tun, gut erprobt.