diff options
| author | mokou <mokou@fastmail.com> | 2022-07-15 14:31:49 +0200 |
|---|---|---|
| committer | mokou <mokou@fastmail.com> | 2022-07-15 14:31:49 +0200 |
| commit | c791cf4232fbfc313279b19b483c1adbca1c6862 (patch) | |
| tree | 655ad6c9d33dab11dfd70f28d0ec29d03749a70b /exercises/error_handling/errors5.rs | |
| parent | f1c4caa37fe5027d121aec6433dee85433d9329d (diff) | |
| parent | c265b681b188ea21b3f8585e65ea363fc02c4b50 (diff) | |
Merge branch '5.0-dev'
Diffstat (limited to 'exercises/error_handling/errors5.rs')
| -rw-r--r-- | exercises/error_handling/errors5.rs | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/exercises/error_handling/errors5.rs b/exercises/error_handling/errors5.rs index 365a869..67411c5 100644 --- a/exercises/error_handling/errors5.rs +++ b/exercises/error_handling/errors5.rs @@ -1,8 +1,18 @@ // errors5.rs -// This program uses a completed version of the code from errors4. -// It won't compile right now! Why? -// Execute `rustlings hint errors5` for hints! +// This program uses an altered version of the code from errors4. + +// This exercise uses some concepts that we won't get to until later in the course, like `Box` and the +// `From` trait. It's not important to understand them in detail right now, but you can read ahead if you like. + +// In short, this particular use case for boxes is for when you want to own a value and you care only that it is a +// type which implements a particular trait. To do so, The Box is declared as of type Box<dyn Trait> where Trait is the trait +// the compiler looks for on any value used in that context. For this exercise, that context is the potential errors +// which can be returned in a Result. + +// What can we use to describe both errors? In other words, is there a trait which both errors implement? + +// Execute `rustlings hint errors5` or use the `hint` watch subcommand for a hint. // I AM NOT DONE @@ -11,7 +21,7 @@ use std::fmt; use std::num::ParseIntError; // TODO: update the return type of `main()` to make this compile. -fn main() -> Result<(), ParseIntError> { +fn main() -> Result<(), Box<dyn ???>> { let pretend_user_input = "42"; let x: i64 = pretend_user_input.parse()?; println!("output={:?}", PositiveNonzeroInteger::new(x)?); |
