diff --git a/quadtree/src/quadtree.rs b/quadtree/src/quadtree.rs index 69c9257..cc6f7c5 100644 --- a/quadtree/src/quadtree.rs +++ b/quadtree/src/quadtree.rs @@ -129,6 +129,19 @@ impl> QuadTree { Box::new(my_iter.chain(subtree_iter)) } + + /// Returns all regions + pub fn regions(&self) -> Vec> { + let mut regions = vec![self.region.clone()]; + + regions.extend( + self.subtrees + .iter() + .flat_map(|subtrees| subtrees.iter().flat_map(|subtree| subtree.regions())), + ); + + regions + } } #[cfg(test)] @@ -228,6 +241,8 @@ mod tests { .flat_map(|subtree| subtree.points.iter()) .all(|p| p.item().1 == "data_subdivided") ); + + assert!(quadtree.regions().len() > 1); } #[test]