PinTree

HashMap/Set<Pin<Arc<T>>> based fully safety tree collection

Examples

```rust let mut pt = PinTree::::new();

let a = &pt.node(1); let b = &pt.node(2); let c = &pt.node(3);

pt.setparent(b, a); pt.setparent(c, a); // a // ↙ ↘ // b c

asserteq!(pt.isparent(b, a), true); asserteq!(pt.ischild(a, c), true); rust // Circular references are safe pt.setparent(b, a); pt.setparent(a, c); pt.set_parent(c, b); // a // ↙ ↖ // b → c

pt.set_parent(a, a); // a ⟲ rust let mut pt = PinTree::>::new();

let a = pt.node(Mutex::new(1)); let mut x = a.lock().unwrap(); asserteq!(*x, 1); *x = 2; asserteq!(*x, 2); ```