Rust implementation of Distinct Elements in Streams: An Algorithm for the (Text) Book by S. Chakraborty, K. Meel, N. V. Vinodchandran.
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()
}Licensed under the Apache 2.0 license.