equix/
bucket_array.rs

1//! A data structure for the solver's bucket sort layers
2//!
3//! This module implements the [`hash::KeyValueBucketArray`] and related types,
4//! forming the basis of our solver's temporary storage. The basic key/value
5//! bucket array is a hash table customized with a fixed capacity and minimal
6//! data types. It's organized in a struct-of-arrays fashion, keeping bucket
7//! counts in state memory alongside mutable references to external key and
8//! value memories.
9//!
10//! For performance and memory efficiency, the hash table layer is built on
11//! a manual memory management layer. Individual bucket arrays are backed
12//! by [`mem::BucketArrayMemory`]. Layouts defined at compile time can be
13//! marked using the [`mem::Uninit`] trait and constructed from a single large
14//! buffer of uninitialized reusable memory.
15
16pub(crate) mod hash;
17pub(crate) mod mem;