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