// errors3.rs // // This is a program that is trying to use a completed version of the // `total_cost` function from the previous exercise. It's not working though! // Why not? What should we do to fix it? // // Execute `rustlings hint errors3` or use the `hint` watch subcommand for a // hint. use std::num::ParseIntError; use std::error; // I could have just returned the ParseIntError from the total_cost function // because we know the exact error that's being returned. fn main() -> Result<(), Box>{ // Box is a trait object. // Meaning, you would use this when you know an error can be returned but // not necessarily what kind let mut tokens = 100; let pretend_user_input = "8"; let cost = total_cost(pretend_user_input)?; if cost > tokens { println!("You can't afford that many!"); } else { tokens -= cost; println!("You now have {} tokens.", tokens); } Ok(()) } pub fn total_cost(item_quantity: &str) -> Result { let processing_fee = 1; let cost_per_item = 5; let qty = item_quantity.parse::()?; Ok(qty * cost_per_item + processing_fee) }