crate::ix!();
pub trait TreeLevelSkippingMeasurer {
fn measure_tree_level_skipping(&self) -> HashMap<u8, TreeLevelSkippingStats>;
}
#[derive(Debug, Clone, PartialEq, Builder, Getters)]
#[builder(pattern = "owned", setter(into), build_fn(skip))]
#[getset(get = "pub")]
pub struct TreeLevelSkippingStats {
#[builder(default)]
level: u8,
#[builder(default)]
total_node_count: u64,
#[builder(default)]
total_leaf_count: u64,
}
impl Default for TreeLevelSkippingStats {
fn default() -> Self {
Self {
level: 0,
total_node_count: 0,
total_leaf_count: 0,
}
}
}
impl TreeLevelSkippingStatsBuilder {
pub fn build(&self) -> Result<TreeLevelSkippingStats, derive_builder::UninitializedFieldError> {
let stats = TreeLevelSkippingStats {
level: self.level.unwrap_or_default(),
total_node_count: self.total_node_count.unwrap_or_default(),
total_leaf_count: self.total_leaf_count.unwrap_or_default(),
};
Ok(stats)
}
}