Crates.io | case_insensitive_hashmap |
lib.rs | case_insensitive_hashmap |
version | 1.0.1 |
source | src |
created_at | 2020-06-05 15:41:26.097445 |
updated_at | 2024-07-05 19:33:52.672429 |
description | A HashMap that uses case-insensitive strings as keys. |
homepage | |
repository | https://github.com/PhilipDaniels/case-insensitive-hashmap |
max_upload_size | |
id | 250373 |
size | 25,179 |
A wrapper around the std::collections::HashMap that uses case-insensitive Strings for keys.
Since this is a simple wrapper around the standard HashMap, please see its documentation for more information.
The key type of the CaseInsensitiveHashMap is always UniCase<String>
.
Most methods that have a key parameter have a constraint <K: Into<Key>>
.
This means that you can call them with a String
, a &str
or a UniCase<String>
if you already have one. This make the API more ergonomic than
the alternative of using UniCase<String>
directly as a key type in your
own std::collections::HashMap
.
use unicase::UniCase;
use case_insensitive_hashmap::CaseInsensitiveHashMap;
let mut map = CaseInsensitiveHashMap::new();
map.insert("a", 20);
map.insert("B".to_string(), 40);
// All these are valid key forms.
assert!(map.contains_key("A"));
assert!(map.contains_key("A".to_string()));
let uc = UniCase::new("A".to_string());
assert!(map.contains_key(uc));
// Lookup of values is case-insensitive.
assert_eq!(map.get("a"), Some(&20));
assert_eq!(map.get("A"), Some(&20));
assert_eq!(map["a"], 20);
assert_eq!(map["A"], 20);
This uses the UniCase crate to handle
the case-insensitivity. Strings that are used as keys are wrapped in
UniCase
objects so that they hash and compare for equality in a
case-insensitive manner.