pub struct Histogramdouble {
pub bins: Vec<Bindouble>,
pub n_samples: u64,
pub start_time: DisplayOptionDateTime,
}
Expand description
A simple type for managing a histogram metric.
A histogram maintains the count of any number of samples, over a set of bins. Bins are specified on construction via their left edges, inclusive. There can’t be any “gaps” in the bins, and an additional bin may be added to the left, right, or both so that the bins extend to the entire range of the support.
Note that any gaps, unsorted bins, or non-finite values will result in an error.
Example —–– ```rust use oximeter::histogram::{BinRange, Histogram};
let edges = [0i64, 10, 20]; let mut hist = Histogram::new(&edges).unwrap(); assert_eq!(hist.n_bins(), 4); // One additional bin for the range (20..) assert_eq!(hist.n_samples(), 0); hist.sample(4); hist.sample(100); assert_eq!(hist.n_samples(), 2);
let data = hist.iter().collect::<Vec<_>>(); assert_eq!(data[0].range, BinRange::range(i64::MIN, 0)); // An additional bin for ..0
assert_eq!(data[0].count, 0); // Nothing is in this bin
assert_eq!(data[1].range, BinRange::range(0, 10)); // The range 0..10
assert_eq!(data[1].count, 1); // 4 is sampled into this bin ```
Notes —–
Histograms may be constructed either from their left bin edges, or from a sequence of ranges. In either case, the left-most bin may be converted upon construction. In particular, if the left-most value is not equal to the minimum of the support, a new bin will be added from the minimum to that provided value. If the left-most value is the support’s minimum, because the provided bin was unbounded below, such as (..0)
, then that bin will be converted into one bounded below, (MIN..0)
in this case.
The short of this is that, most of the time, it shouldn’t matter. If one specifies the extremes of the support as their bins, be aware that the left-most may be converted from a BinRange::RangeTo
into a BinRange::Range
. In other words, the first bin of a histogram is always a Bin::Range
or a Bin::RangeFrom
after construction. In fact, every bin is one of those variants, the BinRange::RangeTo
is only provided as a convenience during construction.
Fields§
§bins: Vec<Bindouble>
§n_samples: u64
§start_time: DisplayOptionDateTime
Trait Implementations§
Source§impl Clone for Histogramdouble
impl Clone for Histogramdouble
Source§fn clone(&self) -> Histogramdouble
fn clone(&self) -> Histogramdouble
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for Histogramdouble
impl Debug for Histogramdouble
Source§impl Default for Histogramdouble
impl Default for Histogramdouble
Source§fn default() -> Histogramdouble
fn default() -> Histogramdouble
Source§impl<'de> Deserialize<'de> for Histogramdouble
impl<'de> Deserialize<'de> for Histogramdouble
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for Histogramdouble
impl JsonSchema for Histogramdouble
Source§fn schema_name() -> String
fn schema_name() -> String
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref
keyword. Read more