//@ I/O is a complicated topic, so the code to do that is not exactly pretty - but well,
//@ let's get that behind us.
-// I/O is provided by the module `std::io`, so we first have import that with `use`.
+// I/O is provided by the module `std::io`, so we first have to import that with `use`.
// We also import the I/O *prelude*, which makes a bunch of commonly used I/O stuff
// directly available.
use std::io::prelude::*;
let line = line.unwrap();
// Now that we have our `String`, we want to make it an `i32`.
//@ We first `trim` the `line` to remove leading and trailing whitespace.
- //@ `parse` is a method on `String` that can convert a string to anything. Try finding it's documentation!
+ //@ `parse` is a method on `String` that can convert a string to anything. Try finding its documentation!
//@ In this case, Rust *could* figure out automatically that we need an `i32` (because of the return type
//@ of the function), but that's a bit too much magic for my taste. We are being more explicit here:
// **Exercise 03.2**: Building on exercise 02.2, implement all the things you need on `f32` to make your
// program work with floating-point numbers.
-//@ [index](main.html) | [previous](part02.html) | [raw source](https://www.ralfj.de/git/rust-101.git/blob_plain/HEAD:/workspace/src/part03.rs) | [next](part04.html)
+//@ [index](main.html) | [previous](part02.html) | [raw source](workspace/src/part03.rs) | [next](part04.html)