use crate::{completeness::private::Sealed, completeness::Completeness, InnerScopeGraph, Scope};
use std::hash::Hash;
#[derive(Debug)]
pub struct UncheckedCompleteness {}
impl Sealed for UncheckedCompleteness {}
impl UncheckedCompleteness {
pub unsafe fn new() -> Self {
Self {}
}
}
impl<LABEL: Hash + Eq, DATA> Completeness<LABEL, DATA> for UncheckedCompleteness {
fn cmpl_new_scope(&self, _: &InnerScopeGraph<LABEL, DATA>, _: Scope) {}
type NewEdgeResult = ();
fn cmpl_new_edge(
&self,
inner_scope_graph: &InnerScopeGraph<LABEL, DATA>,
src: Scope,
lbl: LABEL,
dst: Scope,
) -> Self::NewEdgeResult {
inner_scope_graph.add_edge(src, lbl, dst)
}
type GetEdgesResult<'rslv> = Vec<Scope>
where
Self: 'rslv, LABEL: 'rslv, DATA: 'rslv;
fn cmpl_get_edges<'rslv>(
&self,
inner_scope_graph: &InnerScopeGraph<LABEL, DATA>,
src: Scope,
lbl: LABEL,
) -> Self::GetEdgesResult<'rslv>
where
LABEL: 'rslv,
DATA: 'rslv,
{
inner_scope_graph.get_edges(src, lbl)
}
}