pub struct ShardedMap<K, V, const B: usize>where
K: OHash + Pod + Default + Debug + Send + Ord,
V: Cmov + Pod + Default + Debug + Send,
BatchBlock<K, V>: Ord + Send,{ /* private fields */ }Expand description
A sharded hashmap implementation. The map is split across multiple partitions and each partition is a separate hashmap. Queries are resolved in batches, to not leak the number of queries that go to each partition.
§Parameters
K: The type of the keys in the map.V: The type of the values in the map.P: The number of partitions in the map.B: The maximum number of non-distinct keys in any partition in a batch.
Implementations§
Source§impl<K, V, const B: usize> ShardedMap<K, V, B>
impl<K, V, const B: usize> ShardedMap<K, V, B>
Sourcepub fn new(capacity: usize) -> Self
pub fn new(capacity: usize) -> Self
Creates a new ShardedMap with the given number of partitions.
Sourcepub fn get_batch_distinct<const N: usize>(
&mut self,
keys: &[K; N],
) -> [OOption<V>; N]
pub fn get_batch_distinct<const N: usize>( &mut self, keys: &[K; N], ) -> [OOption<V>; N]
Reads N values from the map, leaking only N and B, but not any information about the keys (doesn’t leak the number of keys to each partition).
§Preconditions
- No repeated keys in the input array.
Sourcepub fn insert_batch_distinct<const N: usize>(
&mut self,
keys: &[K; N],
values: &[V; N],
)
pub fn insert_batch_distinct<const N: usize>( &mut self, keys: &[K; N], values: &[V; N], )
Inserts a batch of N distinct key-value pairs into the map, distributing them across partitions.
§Preconditions
- No repeated keys in the input array.
- All of the inserted keys are not already present in the map.
- There is enough space in the map to insert all N keys.
Trait Implementations§
Source§impl<K, V, const B: usize> Debug for ShardedMap<K, V, B>
impl<K, V, const B: usize> Debug for ShardedMap<K, V, B>
Auto Trait Implementations§
impl<K, V, const B: usize> Freeze for ShardedMap<K, V, B>
impl<K, V, const B: usize> !RefUnwindSafe for ShardedMap<K, V, B>
impl<K, V, const B: usize> Send for ShardedMap<K, V, B>
impl<K, V, const B: usize> Sync for ShardedMap<K, V, B>
impl<K, V, const B: usize> Unpin for ShardedMap<K, V, B>
impl<K, V, const B: usize> !UnwindSafe for ShardedMap<K, V, B>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more