pin_tree 0.2.0

HashMap/Set<Pin<Arc<T>>> based fully safety tree collection
Documentation
  • Coverage
  • 100%
    15 out of 15 items documented1 out of 15 items with examples
  • Size
  • Source code size: 11.21 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.95 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • 2A5F/PinTree
    2 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • 2A5F

PinTree

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

Examples

let mut pt = PinTree::<i32>::new();

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

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

assert_eq!(pt.is_parent(b, a), true);
assert_eq!(pt.is_child(a, c), true);
// Circular references are safe
pt.set_parent(b, a);
pt.set_parent(a, c);
pt.set_parent(c, b);
//    a
//  ↙  ↖
// b  →  c

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

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