| Crates.io | schm |
| lib.rs | schm |
| version | 0.1.2 |
| created_at | 2022-04-30 21:52:44.495983+00 |
| updated_at | 2022-04-30 22:45:10.937798+00 |
| description | Simplified HashMap implementation handling collision by separate chaining |
| homepage | |
| repository | https://github.com/splurf/schm |
| max_upload_size | |
| id | 578360 |
| size | 7,494 |
A basic example of hash collision using two strings:
use std::{
collections::hash_map::DefaultHasher,
hash::{Hash, Hasher},
};
const DEFAULT_CAPACITY: u64 = 17;
fn hash_to_index<T: Hash>(key: T) -> u64 {
let mut state = DefaultHasher::new();
key.hash(&mut state);
state.finish() % DEFAULT_CAPACITY
}
fn main() {
let a = hash_to_index("orange"); // Calculates to '8'
let b = hash_to_index("blueberry"); // Calculates to '8'
assert_eq!(a, b)
}
Here, collision is completely handled due to separate chaining:
use schm::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("orange", "ORANGE");
map.insert("blueberry", "BLUEBERRY");
assert_eq!(map.get("orange"), Some("ORANGE"));
assert_eq!(map.get("blueberry"), Some("BLUEBERRY"));
}