[−][src]Crate hashcow
HashCow
HashCow is a HashMap implementation with copy-on-write keys and values.
Originally built for optimizing the Purple Protocol, this library provides a way to link HashMaps in memory that have duplicate entries. Instead of the duplicate data, it is instead borrowed and it is only cloned when mutation is needed.
Using HashCow
use hashcow::{Form, CowHashMap}; let mut hm: CowHashMap<str, [u8]> = CowHashMap::new(); // We insert an owned value in the map hm.insert_owned("key".to_owned(), vec![1, 2, 3]); assert_eq!(hm.entry_form(&"key").unwrap(), Form::Owned); // We now create a clone with borrowed fields let mut hm_clone = hm.borrow_fields(); assert_eq!(hm_clone.entry_form(&"key").unwrap(), Form::Borrowed); // On mutation, the borrowed entry is cloned let entry = hm_clone.get_mut(&"key").unwrap(); // We now mutate the cloned value *entry = vec![4, 5, 6]; assert_eq!(hm_clone.entry_form(&"key").unwrap(), Form::Owned); // The two maps now have different entries for the same key assert_eq!(hm.get(&"key").unwrap(), &[1, 2, 3]); assert_eq!(hm_clone.get(&"key").unwrap(), &[4, 5, 6]);
Contributing
We welcome anyone wishing to contribute to HashCow! Check out the [issues section][issues] of the repository before starting out.
License
HashCow is licensed under the MIT license.
Macros
count | Counts the number of values passed to it. |
set | Returns a HashSet containing the passed values. |
Structs
CowHashMap | A HashMap data-structure with copy-on-write keys and values. |
Enums
Form | The form of the entry in the map. Can be either
|