#element #text #distinct #stream #book #seedable-rng #u128 #et #al #sourav

cmv

Rust implementation of 'Distinct Elements in Streams: An Algorithm for the (Text) Book' by Sourav Chakraborty et al

1 unstable release

Uses new Rust 2024

0.1.0 Jul 16, 2025

#4 in #seedable-rng

Apache-2.0

89KB
159 lines

cmv

Crates.io Version Crates.io License Crates.io MSRV

Rust implementation of Distinct Elements in Streams: An Algorithm for the (Text) Book by S. Chakraborty, K. Meel, N. V. Vinodchandran.

Usage

use rand::SeedableRng;
use rand::rngs::SmallRng;

use cmv::Cmv;

fn estimate_distinct(words: &[&str]) -> u128 {
      let mut rng = SmallRng::seed_from_u64(0x123456789);
      let mut cmv = Cmv::with_capacity(128);

      for &word in words.iter() {
          cmv.insert(word, &mut rng);
      }

      cmv.count()
}

License

Licensed under the Apache 2.0 license.

Dependencies

~510KB