Expand description
It can be useful to not have to worry about missing keys in a map. If a key is requested that doesn’t have a value a default value is simply returned. This is exactly what this library provides.
§Examples
§Counter
A clear use case of this is when counting the unique elements in a list. Here you want to add one to the existing value in the map for that key. This is a problem for the first addition when there’s no value for the key yet. With this library you can specify when creating the map that the default value should be zero.
let nums = [1, 4, 3, 3, 4, 2, 4];
let mut counts: DefaultHashMap<i32, i32> = defaulthashmap!();
// DefaultHashMap::new() is equivalent.
for num in nums.into_iter() {
counts[num] += 1;
}
println!("{:?}", counts);
// DefaultHashMap { map: {1: 1, 3: 2, 2: 1, 4: 3}, default: 0 }
§Synonym lists
Another way the default map can be used is using a map filled with other collections, such as a
Vec
, a HashMap
or even another default map.
Next follows some code to create a map where we start with tuples of synonyms and we end with a
map that contains the list of synonyms for each word.
let synonym_tuples = [
("nice", "sweet"),
("sweet", "candy"),
("nice", "entertaining"),
("nice", "good"),
("entertaining", "absorbing"),
];
let mut synonym_map: DefaultHashMap<&str, Vec<&str>> = defaulthashmap!();
// DefaultHashMap::new() is equivalent.
for (l, r) in synonym_tuples.into_iter() {
synonym_map[l].push(r);
synonym_map[r].push(l);
}
assert_eq!(synonym_map["good"], vec!["nice"]);
assert_eq!(synonym_map["nice"], vec!["sweet", "entertaining", "good"]);
assert_eq!(synonym_map["evil"], Vec::<&str>::new());
Macros§
- defaultbtreemap
- The
defaultbtreemap!
macro can be used to easily initialize aDefaultBTreeMap
in the following ways: - defaulthashmap
- The
defaulthashmap!
macro can be used to easily initialize aDefaultHashMap
in the following ways:
Structs§
- DefaultB
Tree Map - A
BTreeMap
that returns a default when keys are accessed that are not present. - Default
Hash Map - A
HashMap
that returns a default when keys are accessed that are not present.