summaryrefslogtreecommitdiff
path: root/crates/equix/src/bucket_array.rs
blob: e3668835b7d5a21e45d255152a119a9b4d9f3c1d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//! A data structure for the solver's bucket sort layers
//!
//! This module implements the [`KeyValueBucketArray`] and related types,
//! forming the basis of our solver's temporary storage. The basic key/value
//! bucket array is a hash table customized with a fixed capacity and minimal
//! data types. The overall key/value array is organized in a struct-of-arrays
//! fashion, keeping bucket counts in state memory alongside mutable references
//! to external key and value memories.
//!
//! The implementation is split into a higher level which knows about the hash
//! table semantics and a lower level that's responsible for memory safety.

mod hash;
mod mem;

pub(crate) use hash::{
    Count, Insert, Key, KeyLookup, KeyStorage, KeyValueBucketArray, Shape, ValueBucketArray,
    ValueLookup,
};
pub(crate) use mem::{BucketArrayMemory, Uninit};