Maps in Rust
Maps are Rust’s built-in associative data type (sometimes called hashes or dicts in other languages).
To create an empty map, use the HashMap::new method.
use std::collections::HashMap;
fn main() {
let mut m = HashMap::new();Set key/value pairs using typical name.insert(key, val) syntax.
m.insert("k1", 7);
m.insert("k2", 13);Printing a map with e.g. println! will show all of its key/value pairs.
println!("map: {:?}", m);Get a value for a key with name.get(key).
if let Some(v1) = m.get("k1") {
println!("v1: {}", v1);
}If the key doesn’t exist, the Option::None is returned.
let v3 = m.get("k3").unwrap_or(&0);
println!("v3: {}", v3);The len method returns the number of key/value pairs.
println!("len: {}", m.len());The HashMap::remove method removes key/value pairs from a map.
m.remove("k2");
println!("map: {:?}", m);Clearing all key/value pairs from a map can be done with the clear method.
m.clear();
println!("map: {:?}", m);The contains_key method can be used to check if a key is present in the map.
let prs = m.contains_key("k2");
println!("prs: {}", prs);You can also declare and initialize a new map in the same line with this syntax.
let mut n = HashMap::new();
n.insert("foo", 1);
n.insert("bar", 2);
println!("map: {:?}", n);In Rust, you can compare two maps for equality using the == operator.
let mut n2 = HashMap::new();
n2.insert("foo", 1);
n2.insert("bar", 2);
if n == n2 {
println!("n == n2");
}
}Note that maps appear in the form {"k": v, "k": v} when printed with println!.
$ cargo run
map: {"k1": 7, "k2": 13}
v1: 7
v3: 0
len: 2
map: {"k1": 7}
map: {}
prs: false
map: {"bar": 2, "foo": 1}
n == n2