Rust Generic Union-Find or Disjoint-Set library