use poolshark::local::LPooled;
use std::{collections::HashSet, hash::Hash};
fn unsorted_dedup_stable<T: Hash + Eq>(v: &mut Vec<T>) {
let mut set: LPooled<HashSet<&T>> = LPooled::take(); let mut retain: LPooled<Vec<bool>> = LPooled::take(); for t in v.iter() {
retain.push(set.insert(t))
}
drop(set); let mut i = 0;
v.retain(|_| {
let res = retain[i];
i += 1;
res
})
}
fn main() {
let mut v = vec!["one", "two", "one", "five", "three sir", "three", "four", "five"];
println!("with dupes: {:?}", v);
unsorted_dedup_stable(&mut v);
println!("deduped: {:?}", v)
}