1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/*!
This crate provides a direct port of the [Golang](https://github.com/DataDog/sketches-go)
[DDSketch](https://arxiv.org/pdf/1908.10693.pdf) implementation to Rust. All efforts
have been made to keep this as close to the original implementation as possible, with a few tweaks to
get closer to idiomatic Rust.
# Usage
Add multiple samples to a DDSketch and invoke the `quantile` method to pull any quantile from
*0.0* to *1.0*.
```rust
use sketches_ddsketch::{Config, DDSketch};
let c = Config::defaults();
let mut d = DDSketch::new(c);
d.add(1.0);
d.add(1.0);
d.add(1.0);
let q = d.quantile(0.50).unwrap();
assert!(q < Some(1.01));
assert!(q > Some(0.99));
```
Sketches can also be merged.
```rust
use sketches_ddsketch::{Config, DDSketch};
let c = Config::defaults();
let mut d1 = DDSketch::new(c);
let mut d2 = DDSketch::new(c);
d1.add(1.0);
d2.add(2.0);
d2.add(2.0);
d1.merge(&d2);
assert_eq!(d1.count(), 3);
```
*/
pub use Config;
pub use ;