icentral_subgraph/
bfs_from_source.rs1crate::ix!();
2
3impl BfsFromSource for SubGraph {
4
5    fn do_bfs_from_source_count_vertices_and_mark_visited(
9        &self, 
10        source:        NodeId, 
11        visit_markers: &mut VisitMarkers,
12        out_vec:       &mut Vec<i32>)
13    -> Result<(),BetweennessCentralityError>
14    {
15        let queue_name = name![
16            self.name(), 
17            "do_bfs_from_source_count_vertices_and_mark_visited::queue"
18        ];
19
20        let mut queue = NodeIdQueue::empty(queue_name);
21
22        queue.enqueue(source);
23
24        while let Some(node) = queue.dequeue() {
25
26            let nbrs = self.neighbors(node).clone();
27
28            for &nbr in nbrs.iter() {
29
30                if visit_markers.unvisited(nbr) {
31
32                    visit_markers.visit(nbr);
33
34                    queue.enqueue(nbr);
35
36                    *out_vec.iter_mut().last().unwrap() += 1;
37                }
38            }
39        }
40
41        Ok(())
42    }
43}