Place implhm in your Cargo.toml
:
toml
[dependencies]
implhm = "1.0.4"
There are several different methods for handling collision. implhm provides the most basic implementations. The following features are available:
Here is an example of using a single feature:
toml
[dependencies]
implhm = { version = "1.0.4", default-features = false, features = ["quadratic-probing"] }
A basic example of hash collision using two strings: ```rust use std::{ collections::hash_map::DefaultHasher, hash::{Hash, Hasher}, };
fn hash
fn main() {
/*
When passed through the hash
function,
orange
and blueberry
both equal 8
/
let a = hash("orange");
let b = hash("blueberry");
/
If collision isn't handled, then the value
("orange") at the location of the key (8
)
would be replaced with the value ("blueberry")
*/
assert_eq!(a, b)
}
Here, collision is completely handled due to *separate chaining*/*open addressing*:
rust
use implhm::{Map, SCHashMap};
fn main() { let mut map = SCHashMap::default();
map.insert("orange", "ORANGE");
map.insert("blueberry", "BLUEBERRY");
/*
In the case of *separate chaining*, collision is
handled by placing any key-pairs that calculate to
the same hash into an ordered list at that index.
*/
assert_eq!(map.get("orange"), Some("ORANGE"));
assert_eq!(map.get("blueberry"), Some("BLUEBERRY"));
} ```