Crates.io | sketches-rust |
lib.rs | sketches-rust |
version | |
source | src |
created_at | 2023-03-26 10:45:36.278024+00 |
updated_at | 2025-03-03 09:34:32.352866+00 |
description | Rust implementation of DDSketch. |
homepage | https://github.com/loyispa/sketches-rust |
repository | https://github.com/loyispa/sketches-rust |
max_upload_size | |
id | 821048 |
Cargo.toml error: | TOML parse error at line 19, column 1 | 19 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
The port of the DDSketch rust implementation.
Run the following Cargo command in your project directory:
cargo add sketches-rust
Or add the following line to your Cargo.toml:
sketches-rust = "0.2.3"
Query:
use sketches_rust::DDSketch;
let mut d = DDSketch::collapsing_lowest_dense(0.02,100).unwrap();
d.accept(1.0);
d.accept(2.0);
d.accept(3.0);
let c = d.get_count();
assert_eq!(c, 3.0);
let q = d.get_value_at_quantile(0.5).unwrap();
assert!(q < 2.01 && q > 1.99);
Merge:
use sketches_rust::DDSketch;
let mut d1 = DDSketch::collapsing_lowest_dense(0.02,100).unwrap();
d1.accept(1.0);
d1.accept(2.0);
d1.accept(3.0);
assert_eq!(3.0, d1.get_count());
let mut d2 = DDSketch::collapsing_lowest_dense(0.02,100).unwrap();
d2.accept(1.0);
d2.accept(2.0);
d2.accept(3.0);
assert_eq!(3.0, d2.get_count());
d2.merge_with(&mut d1).unwrap();
assert_eq!(6.0, d2.get_count());
Serialize:
use sketches_rust::DDSketch;
let mut d = DDSketch::unbounded_dense(2e-2).unwrap();
d.accept(1.0);
d.accept(2.0);
d.accept(3.0);
d.accept(4.0);
d.accept(5.0);
println!("encode: {:?}", d.encode().unwrap());
Deserialize:
use sketches_rust::DDSketch;
let mut input = vec![
2, 42, 120, 57, 5, 47, 167, 240, 63, 0, 0, 0, 0, 0, 0, 0, 0, 13, 50, 130, 1, 2, 136, 32, 0,
3, 0, 0, 0, 3, 0, 2, 0, 0, 3, 3, 2, 2, 3, 3, 2, 0, 0, 0, 0, 2, 0, 2, 2, 2, 4, 4, 132, 64,
0, 4, 2, 0, 2, 2, 3, 132, 64, 4, 132, 64, 4, 2, 2, 0, 6, 4, 6, 132, 64, 2, 6,
];
let mut d = DDSketch::decode(&input).unwrap();
assert_eq!(d.get_count(), 100.0);