1use serde::{Deserialize, Serialize};
2
3use crate::average::Measurement;
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7#[serde(rename_all = "camelCase")]
8pub struct HistogramBucket {
9 pub bucket_start: Measurement,
11 pub bucket_end: Measurement,
13 pub bucket_count: u64,
15}
16
17#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
19#[serde(rename_all = "camelCase")]
20pub struct Histogram {
21 pub total_bucket_count: usize,
23 #[serde(default)]
25 pub buckets: Vec<HistogramBucket>,
26}
27
28impl Histogram {
29 #[must_use]
31 pub fn is_empty(&self) -> bool {
32 self.total_bucket_count == 0 || self.buckets.is_empty()
33 }
34
35 #[must_use]
37 pub fn buckets(&self) -> &[HistogramBucket] {
38 &self.buckets
39 }
40}