capability_feature_measurement/
level_specific_stats.rs1crate::ix!();
3
4pub trait TreeLevelSpecificMeasurer {
10 fn measure_tree_level_stats(&self) -> HashMap<u8, TreeLevelAggregate>;
12}
13
14#[derive(Debug, Clone, PartialEq, derive_builder::Builder, getset::Getters)]
17#[builder(pattern = "owned", setter(into), build_fn(skip))]
18pub struct TreeLevelAggregate {
19 #[getset(get = "pub")]
20 #[builder(default)]
21 total_node_count: u64,
22
23 #[getset(get = "pub")]
24 #[builder(default)]
25 total_child_count: u64,
26
27 #[getset(get = "pub")]
28 #[builder(default)]
29 total_leaf_count: u64,
30}
31
32impl Default for TreeLevelAggregate {
33 fn default() -> Self {
34 Self {
35 total_node_count: 0,
36 total_child_count: 0,
37 total_leaf_count: 0,
38 }
39 }
40}
41
42impl TreeLevelAggregateBuilder {
43 pub fn build(&self) -> Result<TreeLevelAggregate, derive_builder::UninitializedFieldError> {
44 let agg = TreeLevelAggregate {
45 total_node_count: self.total_node_count.unwrap_or_default(),
46 total_child_count: self.total_child_count.unwrap_or_default(),
47 total_leaf_count: self.total_leaf_count.unwrap_or_default(),
48 };
49 Ok(agg)
50 }
51}