mirror of
https://github.com/ahgamut/rust-ape-example.git
synced 2024-11-26 09:41:04 +00:00
52 lines
1.4 KiB
Rust
52 lines
1.4 KiB
Rust
|
// ./src/std/hash.md
|
||
|
|
||
|
|
||
|
use std::collections::HashMap;
|
||
|
|
||
|
fn call(number: &str) -> &str {
|
||
|
match number {
|
||
|
"798-1364" => "We're sorry, the call cannot be completed as dialed.
|
||
|
Please hang up and try again.",
|
||
|
"645-7689" => "Hello, this is Mr. Awesome's Pizza. My name is Fred.
|
||
|
What can I get for you today?",
|
||
|
_ => "Hi! Who is this again?"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fn part0() {
|
||
|
let mut contacts = HashMap::new();
|
||
|
|
||
|
contacts.insert("Daniel", "798-1364");
|
||
|
contacts.insert("Ashley", "645-7689");
|
||
|
contacts.insert("Katie", "435-8291");
|
||
|
contacts.insert("Robert", "956-1745");
|
||
|
|
||
|
// Takes a reference and returns Option<&V>
|
||
|
match contacts.get(&"Daniel") {
|
||
|
Some(&number) => println!("Calling Daniel: {}", call(number)),
|
||
|
_ => println!("Don't have Daniel's number."),
|
||
|
}
|
||
|
|
||
|
// `HashMap::insert()` returns `None`
|
||
|
// if the inserted value is new, `Some(value)` otherwise
|
||
|
contacts.insert("Daniel", "164-6743");
|
||
|
|
||
|
match contacts.get(&"Ashley") {
|
||
|
Some(&number) => println!("Calling Ashley: {}", call(number)),
|
||
|
_ => println!("Don't have Ashley's number."),
|
||
|
}
|
||
|
|
||
|
contacts.remove(&"Ashley");
|
||
|
|
||
|
// `HashMap::iter()` returns an iterator that yields
|
||
|
// (&'a key, &'a value) pairs in arbitrary order.
|
||
|
for (contact, &number) in contacts.iter() {
|
||
|
println!("Calling {}: {}", contact, call(number));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
pub fn main() {
|
||
|
part0();
|
||
|
}
|
||
|
|