pub(crate) fn dfs_visitor<G, F, C>( graph: G, u: G::NodeId, visitor: &mut F, discovered: &mut impl VisitMap<G::NodeId>, finished: &mut impl VisitMap<G::NodeId>, time: &mut Time, ) -> Cwhere G: IntoNeighbors + Visitable, F: FnMut(DfsEvent<G::NodeId>) -> C, C: ControlFlow,