pub struct RawEntryBuilder<'a, K, V, S, A = Global>where
A: Allocator,{ /* private fields */ }Expand description
A builder for computing where in a HashMap a key-value pair would be stored.
See the HashMap::raw_entry docs for usage examples.
ยงExamples
use core::hash::{BuildHasher, Hash};
use rune::alloc::hash_map::RawEntryBuilder;
use rune::alloc::HashMap;
use rune::alloc::prelude::*;
let mut map = HashMap::new();
map.try_extend([(1, 10), (2, 20), (3, 30)])?;
fn compute_hash<K, S>(hash_builder: &S, key: &K) -> u64
where
K: Hash + ?Sized,
S: BuildHasher,
{
use core::hash::Hasher;
let mut state = hash_builder.build_hasher();
key.hash(&mut state);
state.finish()
}
for k in 0..6 {
let hash = compute_hash(map.hasher(), &k);
let v = map.get(&k).cloned();
let kv = v.as_ref().map(|v| (&k, v));
println!("Key: {} and value: {:?}", k, v);
let builder: RawEntryBuilder<_, _, _> = map.raw_entry();
assert_eq!(builder.from_key(&k), kv);
assert_eq!(map.raw_entry().from_hash(hash, |q| *q == k), kv);
assert_eq!(map.raw_entry().from_key_hashed_nocheck(hash, &k), kv);
}