スマートポインタは unsafe なコードをかなり頻繁に使う傾向があります。前述の通り、Rust の最も低レベルなメモリとやり取りするための一般的なツールだからです。
unsafe なコードとは何でしょうか? unsafe なコードは、Rust コンパイラが保証できないいくつかの能力を除いて、通常の Rust と全く同じように振る舞います。
unsafe なコードの主な能力は 生ポインタの参照外し です。つまり、メモリ上のある位置を指す 生ポインタ を取り、「ここにデータ構造がある!」と宣言して、それを使用可能なデータの表現(例えば *const u8 を u8 に)に変換することです。
Rust はメモリに書き込まれるすべてのバイトの意味を追跡する方法を持っていません。Rust は 生ポインタ として使われる任意の数値に何が存在するかについて保証できないため、参照外しを unsafe { ... } ブロックの中に置きます。
スマートポインタは 生ポインタの参照外し を広範に行いますが、それらは何をしているかについて十分に実証されています。