It's pretty easy to do at runtime without weak pointers, people who write rust are just allergic to reference counting. Which is absurd, because most programmer use RC values thousands of times every day without even thinking about it. It's really this easy: https://pastebin.com/SAeKG7Sw
You want to handle teardown yourself anyway, as otherwise long lists could overflow the stack on drop.
I'm not convinced not using `Weak` is better, though.