Skip to main content

osom_lib_hash_tables/bytell/
configuration.rs

1//! Contains the configuration for the bytell hash table.
2
3use core::hash::BuildHasher;
4
5use osom_lib_alloc::traits::Allocator;
6
7use crate::helpers::MaxLoadFactor;
8
9use super::hash_to_index::HashToIndex;
10
11/// The actual bytell hash table configuration trait.
12pub trait BytellConfig: Default + Clone + Send + Sync + Sized {
13    type ConcreteHashToIndex: HashToIndex;
14    type ConcreteBuildHasher: BuildHasher;
15    type ConcreteAllocator: Allocator;
16
17    fn build_hasher(&self) -> &Self::ConcreteBuildHasher;
18    fn hash_to_index(&self) -> &Self::ConcreteHashToIndex;
19    fn hash_to_index_mut(&mut self) -> &mut Self::ConcreteHashToIndex;
20    fn allocator(&self) -> &Self::ConcreteAllocator;
21    fn load_factor(&self) -> MaxLoadFactor;
22}