Skip to main content

conspire/geometry/ntree/balance/
mod.rs

1pub mod octree;
2pub mod quadtree;
3
4use crate::geometry::ntree::pair::Pairing;
5
6#[derive(Clone, Copy)]
7pub enum Balancing {
8    Strong,
9    Weak,
10    None,
11}
12
13pub trait Balance {
14    fn equilibrate(&mut self, balancing: Balancing, pairing: Pairing) -> Result<(), &'static str> {
15        let mut balanced = false;
16        let mut paired = false;
17        while !balanced || !paired {
18            balanced = self.balance(balancing);
19            paired = self.pair_up(pairing)?;
20        }
21        Ok(())
22    }
23    fn balance(&mut self, balancing: Balancing) -> bool;
24    fn pair_up(&mut self, pairing: Pairing) -> Result<bool, &'static str>;
25}