use qutee::{AsPoint, Boundary, ConstCap, QuadTree}; use rand::{Rng, SeedableRng}; const ITEMS: usize = 1_000_000; pub struct QuadTreeEntry { x: usize, y: usize, _value: usize, } impl AsPoint for QuadTreeEntry { fn as_point(&self) -> qutee::Point { (self.x, self.y).into() } } fn main() { let data = parse_data(); let mut tree = QuadTree::new_with_const_cap(Boundary::between_points((0, 0), (32_767, 32_767))); insert_data(&mut tree, data); query_data(&mut tree, Boundary::new((32, 32), 10_000, 20_000)); } fn parse_data() -> impl Iterator { let mut rng = rand::rngs::StdRng::seed_from_u64(10); (0..ITEMS) .into_iter() .map(move |i| (rng.gen_range(0..32_767), rng.gen_range(0..32_767), i)) .map(|(x, y, value)| QuadTreeEntry { x, y, _value: value, }) } fn insert_data( qt: &mut QuadTree>, data: impl Iterator, ) { data.for_each(|item| qt.insert(item).unwrap()) } fn query_data(qt: &mut QuadTree>, area: Boundary) { let _ = qt.query(area); }