use std::hash::Hash;
pub use ahash::RandomState;
pub use hashbrown;
pub use compactedcellvec::CompactedCellVec;
pub use compressed::{Decompressor, IndexBlock};
#[cfg(feature = "roaring")]
pub use treemap::H3Treemap;
use crate::{H3Cell, H3DirectedEdge, Index};
pub mod compactedcellvec;
pub mod compressed;
pub mod indexvec;
#[cfg(feature = "roaring")]
pub mod treemap;
pub trait ContainsIndex<I: Index> {
fn contains_index(&self, index: &I) -> bool;
}
pub type HashMap<K, V> = hashbrown::HashMap<K, V, RandomState>;
pub type HashSet<V> = hashbrown::HashSet<V, RandomState>;
pub type H3EdgeMap<V> = HashMap<H3DirectedEdge, V>;
pub type H3CellMap<V> = HashMap<H3Cell, V>;
pub type H3CellSet = HashSet<H3Cell>;
impl<I: Index + Eq + Hash> ContainsIndex<I> for HashSet<I> {
fn contains_index(&self, index: &I) -> bool {
self.contains(index)
}
}
impl<I: Index + Eq + Hash, V> ContainsIndex<I> for HashMap<I, V> {
fn contains_index(&self, index: &I) -> bool {
self.contains_key(index)
}
}