-// minimum of a list. We are going to make use of the standard library, so let's import that:
-
-use std;
-
-// Let us start by thinking about the *type* of our function. Rust forces us to give the types of
-// all arguments, and the return type, before we even start writing the body. In the case of our minimum
-// function, we may be inclined to say that it returns a number. But then we would be in trouble: What's
-// the minimum of an empty list? The type of the function says we have to return *something*.
-// We could just choose 0, but that would be kind of arbitrary. What we need
-// is a type that is "a number, or nothing". Such a type (of multiple exclusive options)
-// is called an "algebraic datatype", and Rust lets us define such types with the keyword `enum`.
-// Coming from C(++), you can think of such a type as a `union`, together with a field that
-// stores the variant of the union that's currently used.
-
+// minimum of a list.
+
+//@ ## Getting started
+//@ Let us start by thinking about the *type* of our function. Rust forces us to give the types of
+//@ all arguments, and the return type, before we even start writing the body. In the case of our
+//@ minimum function, we may be inclined to say that it returns a number. But then we would be in
+//@ trouble: What's the minimum of an empty list? The type of the function says we have to return
+//@ *something*. We could just choose 0, but that would be kind of arbitrary. What we need
+//@ is a type that is "a number, or nothing". Such a type (of multiple exclusive options)
+//@ is called an "algebraic datatype", and Rust lets us define such types with the keyword `enum`.
+//@ Coming from C(++), you can think of such a type as a `union`, together with a field that
+//@ stores the variant of the union that's currently used.
+
+// An `enum` for "a number or nothing" could look as follows: