summaryrefslogtreecommitdiff
path: root/exercises/error_handling/errorsn.rs
diff options
context:
space:
mode:
Diffstat (limited to 'exercises/error_handling/errorsn.rs')
-rw-r--r--exercises/error_handling/errorsn.rs137
1 files changed, 1 insertions, 136 deletions
diff --git a/exercises/error_handling/errorsn.rs b/exercises/error_handling/errorsn.rs
index c2b16ce..2f3566b 100644
--- a/exercises/error_handling/errorsn.rs
+++ b/exercises/error_handling/errorsn.rs
@@ -13,7 +13,7 @@
// type goes where the question marks are, and how do we return
// that type from the body of read_and_validate?
//
-// Scroll down for hints :)
+// Execute `rustlings hint errors4` for hints :)
use std::error;
use std::fmt;
@@ -110,138 +110,3 @@ impl error::Error for CreationError {
}
}
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// First hint: To figure out what type should go where the ??? is, take a look
-// at the test helper function `test_with_str`, since it returns whatever
-// `read_and_validate` returns and`test_with_str` has its signature fully
-// specified.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Next hint: There are three places in `read_and_validate` that we call a
-// function that returns a `Result` (that is, the functions might fail).
-// Apply the `?` operator on those calls so that we return immediately from
-// `read_and_validate` if those function calls fail.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Another hint: under the hood, the `?` operator calls `From::from`
-// on the error value to convert it to a boxed trait object, a Box<dyn error::Error>,
-// which is polymorphic-- that means that lots of different kinds of errors
-// can be returned from the same function because all errors act the same
-// since they all implement the `error::Error` trait.
-// Check out this section of the book:
-// https://doc.rust-lang.org/book/ch09-02-recoverable-errors-with-result.html#a-shortcut-for-propagating-errors-the--operator
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Another another hint: Note that because the `?` operator returns
-// the *unwrapped* value in the `Ok` case, if we want to return a `Result` from
-// `read_and_validate` for *its* success case, we'll have to rewrap a value
-// that we got from the return value of a `?`ed call in an `Ok`-- this will
-// look like `Ok(something)`.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-// Another another another hint: `Result`s must be "used", that is, you'll
-// get a warning if you don't handle a `Result` that you get in your
-// function. Read more about that in the `std::result` module docs:
-// https://doc.rust-lang.org/std/result/#results-must-be-used