Když píšete vlastní datovou strukturu v Rustu stylem jako ve standardní knihovně, tak používate unsafe Rust a kompilátor vám s tím moc nepomůže (naopak tam jsou občas větší špeky než v C - to je aspoň můj subjektivní názor).
Jen pokud nutně potřebujete speciální pointery.
On je trošku problém, že se v Rustu snaží hodně lidí psát jako by to bylo C (protože na něj z C přešli). Jsou případy, kdy to může být nutné, ale většina lidí nepíše nový typ datové struktury nebo nový async executor každý den.
(A)Rc a Weak by mělo pro většinu účelů s referencemi bohatě stačit.
Jo, pokud píšete no_std embedded kód bez heapu, tak to začíná být zajímavější. To přiznávám. Ale to bylo i to C.
Abychom se vrátili k tématu. C je těžké a občas dává programátorovi pocit, že to má pod kontrolou, i když něco přehlédl. Rust je těžký, protože za to přehlédnutí programátorovi vynadá. A oba jazyky dávají v "unsafe" režimu možnosti jak udělat něco nedovoleného.
Možná bychom to mohli zobecnit na.. programování je těžké a nemusíme si přidělávat práci ještě použitím nevhodného jazyka. Základy domu taky nekopu lžící a použiju bagr.