pub trait Visitor<G>where
G: WithEdge + WithUnionFind,{
// Required method
fn accept(&mut self, g: &G, e: Edge<G>, ds: &mut UnionFind<G>) -> bool;
// Provided method
fn after_union(&mut self, g: &G, e: Edge<G>, ds: &mut UnionFind<G>) { ... }
}