pub trait DMatch<'a> {
type Edge: Hyperedge;
// Required methods
fn d_match_mut(
&mut self,
e: &SematicCluster<'a, Self::Edge>,
e_prime: &SematicCluster<'a, Self::Edge>,
) -> &HashSet<(usize, usize)>;
fn d_match(
&self,
e: &SematicCluster<'a, Self::Edge>,
e_prime: &SematicCluster<'a, Self::Edge>,
) -> &HashSet<(usize, usize)>;
}