mirror of
https://github.com/rust-lang/rustlings.git
synced 2024-12-25 00:00:05 +03:00
errors3 solution
This commit is contained in:
parent
050a23ce67
commit
c46d8bdf95
|
@ -4,6 +4,17 @@
|
|||
|
||||
use std::num::ParseIntError;
|
||||
|
||||
// Don't change this function.
|
||||
fn total_cost(item_quantity: &str) -> Result<i32, ParseIntError> {
|
||||
let processing_fee = 1;
|
||||
let cost_per_item = 5;
|
||||
let qty = item_quantity.parse::<i32>()?;
|
||||
|
||||
Ok(qty * cost_per_item + processing_fee)
|
||||
}
|
||||
|
||||
// TODO: Fix the compiler error by changing the signature and body of the
|
||||
// `main` function.
|
||||
fn main() {
|
||||
let mut tokens = 100;
|
||||
let pretend_user_input = "8";
|
||||
|
@ -14,14 +25,6 @@ fn main() {
|
|||
println!("You can't afford that many!");
|
||||
} else {
|
||||
tokens -= cost;
|
||||
println!("You now have {} tokens.", tokens);
|
||||
println!("You now have {tokens} tokens.");
|
||||
}
|
||||
}
|
||||
|
||||
fn total_cost(item_quantity: &str) -> Result<i32, ParseIntError> {
|
||||
let processing_fee = 1;
|
||||
let cost_per_item = 5;
|
||||
let qty = item_quantity.parse::<i32>()?;
|
||||
|
||||
Ok(qty * cost_per_item + processing_fee)
|
||||
}
|
||||
|
|
|
@ -675,8 +675,8 @@ If other functions can return a `Result`, why shouldn't `main`? It's a fairly
|
|||
common convention to return something like `Result<(), ErrorType>` from your
|
||||
`main` function.
|
||||
|
||||
The unit (`()`) type is there because nothing is really needed in terms of
|
||||
positive results."""
|
||||
The unit type `()` is there because nothing is really needed in terms of a
|
||||
positive result."""
|
||||
|
||||
[[exercises]]
|
||||
name = "errors4"
|
||||
|
|
|
@ -1 +1,32 @@
|
|||
// Solutions will be available before the stable release. Thank you for testing the beta version 🥰
|
||||
// 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?
|
||||
|
||||
use std::num::ParseIntError;
|
||||
|
||||
// Don't change this function.
|
||||
fn total_cost(item_quantity: &str) -> Result<i32, ParseIntError> {
|
||||
let processing_fee = 1;
|
||||
let cost_per_item = 5;
|
||||
let qty = item_quantity.parse::<i32>()?;
|
||||
|
||||
Ok(qty * cost_per_item + processing_fee)
|
||||
}
|
||||
|
||||
fn main() -> Result<(), ParseIntError> {
|
||||
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ added
|
||||
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.");
|
||||
}
|
||||
|
||||
// Added this line to return the `Ok` variant of the expected `Result`.
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue