+ // Rust's type for (dynamic, growable) strings is `String`. However, our variable `line`
+ // here is not yet of that type. The problem with I/O is that it can always go wrong, so
+ // `line` has type `io::Result<String>`. This is a lot like `Option<String>` ("a `String` or
+ // nothing"), but in the case of "nothing", there is additional information about the error.
+ // Again, I recommend to check [the documentation](http://doc.rust-lang.org/stable/std/io/type.Result.html).
+ // You will see that `io::Result` is actually just an alias for `Result`, so click on that to obtain
+ // the list of all constructors and methods of the type.
+
+ // We will be lazy here and just assume that nothing goes wrong: `unwrap()` returns the `String` if there is one,
+ // and panics the program otherwise. Since a `Result` carries some details about the error that occurred,
+ // there will be a somewhat reasonable error message. Still, you would not want a user to see such
+ // an error, so in a "real" program, we would have to do proper error handling.
+ // Can you find the documentation of `Result::unwrap()`?
+ //
+ // I chose the same name (`line`) for the new variable to ensure that I will never, accidentally,
+ // access the "old" `line` again.