in src/dachshund/typed_graph_builder.rs [272:304]
fn pre_process_rows(
&mut self,
data: Vec<<Self as GraphBuilderBase>::RowType>,
) -> CLQResult<Vec<<Self as GraphBuilderBase>::RowType>> {
let mut row_set: HashSet<<Self as GraphBuilderBase>::RowType> = HashSet::new();
for el in data.into_iter() {
let target_type = el.target_type_id;
let edge_type = el.edge_type_id;
self.non_core_type_map.insert(el.source_id, target_type);
self.edge_type_map
.entry((self.core_type_id, target_type))
.or_insert_with(Vec::new)
.push(edge_type);
row_set.insert(el);
}
for (core, non_core) in self.get_cliques() {
for core_id in core {
for non_core_id in non_core {
for clique_edge in self
.get_clique_edges(*core_id, *non_core_id)
.unwrap()
.into_iter()
{
row_set.insert(clique_edge);
}
}
}
}
let rows_with_cliques: Vec<_> = row_set.into_iter().collect();
self.non_core_type_map.clear();
Ok(rows_with_cliques)
}