Skip to main content

RawEntryBuilder

Struct RawEntryBuilder 

Source
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);
}