start error handling

This commit is contained in:
2026-01-17 09:01:51 +00:00
parent 25da030d2f
commit 6b0ff37562
14 changed files with 46 additions and 0 deletions

6
average-speed/Cargo.toml Normal file
View File

@@ -0,0 +1,6 @@
[package]
name = "average_speed"
version = "0.1.0"
edition = "2024"
[dependencies]

56
average-speed/src/main.rs Normal file
View File

@@ -0,0 +1,56 @@
fn main() {
use std::collections::HashMap;
// initialize a hash map of runners to store their average lap timings
let mut runners = HashMap::new();
let joe = "Joe".to_string();
let jill = "Jill".to_string();
let jane = "Jane".to_string();
let jack = "Jack".to_string();
// insert joe and set his average to 10
runners.insert(joe.clone(), 10);
println!("DEBUG: there's only Joe");
println!("\tthe current values are:\n\t{runners:?}");
// insert other runners and set their default values
runners.entry(jill.clone()).or_insert(5);
runners.entry(jane.clone()).or_insert(5);
runners.entry(jack.clone()).or_insert(5);
println!("\nDEBUG: we initialized Jill, Jane and Jack with 5 minutes per lap");
println!("\tthe current values are:\n\t{runners:?}");
// hard update jill's average to another value
println!("\nDEBUG: hard setting Jill's value to 20");
println!("\tJill's average before: {:?}", runners.get(&jill).unwrap());
runners.insert(jill.clone(), 20);
println!("\tJill's average after: {:?}", runners.get(&jill).unwrap());
// update current values based on old values
println!(
"\nDEBUG: runners have completed one lap
their timings are:
\tJill: 4
\tJack: 10
\tJane: 8
\tJoe: 9"
);
println!("\nDEBUG: updating their values...");
println!("\tvalues before updating:\n\t{runners:?}");
// updating values using another hash map
let mut new_values = HashMap::new();
new_values.entry(jane.clone()).or_insert(8);
new_values.entry(jill.clone()).or_insert(4);
new_values.entry(jack.clone()).or_insert(10);
new_values.entry(joe.clone()).or_insert(9);
for (key, val) in new_values.iter() {
let updater = runners.entry(key.clone()).or_insert(0);
*updater = (*updater + val) / 2;
}
println!("\n\tvalues after updating:\n\t{runners:?}");
}