PinTree
HashMap/Set<Pin<Arc<T>>>
based fully safety tree collection
Examples
let mut pt = new;
let a = &pt.node;
let b = &pt.node;
let c = &pt.node;
pt.set_parent;
pt.set_parent;
// a
// ↙ ↘
// b c
assert_eq!;
assert_eq!;
// Circular references are safe
pt.set_parent;
pt.set_parent;
pt.set_parent;
// a
// ↙ ↖
// b → c
pt.set_parent;
// a ⟲
let mut pt = new;
let a = pt.node;
let mut x = a.lock.unwrap;
assert_eq!;
*x = 2;
assert_eq!;