use std::collections::HashSet;
use crate::{
graph::{Graph, LinkSide},
parameters::Parameters,
prove_length::RefinedRanges,
};
pub(super) fn remove_dangling_refs(
graph: &mut Graph,
_params: &Parameters,
_ranges: &RefinedRanges,
) {
for starts_or_ends in [&mut graph.starts, &mut graph.ends] {
starts_or_ends.retain(|(_link_id, chunk_id)| graph.chunks.contains_key(chunk_id));
}
graph.links.retain(|_link_id, link| {
if let LinkSide::Chunk(from_id) = &link.from {
if !graph.chunks.contains_key(from_id) {
return false;
}
}
if let LinkSide::Chunk(to_id) = &link.to {
if !graph.chunks.contains_key(to_id) {
return false;
}
}
true });
let chunk_ids = graph.chunks.keys().cloned().collect::<HashSet<_>>();
for chunk in graph.chunks.values_mut() {
chunk.successors.retain(|l| graph.links.contains(*l));
chunk.predecessors.retain(|l| graph.links.contains(*l));
chunk.false_chunks.retain(|id| chunk_ids.contains(id));
}
}