use crate::common::types::PointOffsetType;
use crate::gridstore::Blob;
pub use self::builders::{MapIndexBuilder, MapIndexGridstoreBuilder, MapIndexMmapBuilder};
use self::immutable_map_index::ImmutableMapIndex;
pub use self::key::MapIndexKey;
use self::mutable_map_index::MutableMapIndex;
use self::universal_map_index::UniversalMapIndex;
mod builders;
mod facet_index_impl;
pub mod immutable_map_index;
pub mod key;
mod lifecycle;
pub mod mutable_map_index;
mod payload_index_impl;
pub mod read_ops;
#[cfg(test)]
mod tests;
pub mod universal_map_index;
mod value_indexer_impl;
pub mod read_only;
pub(super) const BLOCK_SIZE_KEYWORD: usize = 16;
pub type IdRefIter<'a> = Box<dyn Iterator<Item = &'a PointOffsetType> + 'a>;
pub type IdIter<'a> = Box<dyn Iterator<Item = PointOffsetType> + 'a>;
pub enum MapIndex<N: MapIndexKey + ?Sized>
where
Vec<<N as MapIndexKey>::Owned>: Blob + Send + Sync,
{
Mutable(MutableMapIndex<N>),
Immutable(ImmutableMapIndex<N>),
Mmap(Box<UniversalMapIndex<N>>),
}