pub(crate) mod cursor;
pub(crate) mod edge;
pub(crate) mod iter;
pub mod key;
pub(crate) mod map;
pub(crate) mod node;
pub(crate) mod set;
pub(crate) mod shard;
pub(crate) use cursor::Cursor;
pub(crate) use edge::Edge;
pub use key::Key;
pub(crate) use map::Map;
pub(crate) use set::Set;
pub(crate) use shard::Shard;
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub(crate) enum Smo {
ReplaceNode,
DeleteNode,
CompressEdge,
}
impl Smo {
#[inline]
pub fn is_allocate(self) -> bool {
matches!(self, Self::ReplaceNode)
}
}
fn is_unique(keys: &[u8]) -> bool {
let mut seen = [0u128; 2];
for key in keys {
let row = key / 128;
let col = key % 128;
let bit = 1 << col;
if seen[row as usize] & bit > 0 {
return false;
}
seen[row as usize] |= bit;
}
true
}