Recursive range search.
(
nodes: &'a [Node],
node_idx: usize,
query: &BoundingBox,
results: &mut Vec<&'a RTreeEntry>,
)
| 18 | |
| 19 | /// Recursive range search. |
| 20 | pub(crate) fn search_node<'a>( |
| 21 | nodes: &'a [Node], |
| 22 | node_idx: usize, |
| 23 | query: &BoundingBox, |
| 24 | results: &mut Vec<&'a RTreeEntry>, |
| 25 | ) { |
| 26 | let node = &nodes[node_idx]; |
| 27 | if !node.bbox.intersects(query) { |
| 28 | return; |
| 29 | } |
| 30 | match &node.kind { |
| 31 | NodeKind::Leaf { entries } => { |
| 32 | for entry in entries { |
| 33 | if entry.bbox.intersects(query) { |
| 34 | results.push(entry); |
| 35 | } |
| 36 | } |
| 37 | } |
| 38 | NodeKind::Internal { children } => { |
| 39 | for child in children { |
| 40 | if child.bbox.intersects(query) { |
| 41 | search_node(nodes, child.node_idx, query, results); |
| 42 | } |
| 43 | } |
| 44 | } |
| 45 | } |
| 46 | } |
| 47 | |
| 48 | /// Nearest-neighbor search via priority queue (min-heap). |
| 49 | pub(crate) fn nearest( |
no test coverage detected