Fix link to lifetime elision rules
[rust-101.git] / src / part02.rs
index 235e22d3a3aa762b44b827b3961835fc070b579e..a24a9d0c3c992b1c858ab240cbe6b820ce4b087d 100644 (file)
@@ -21,7 +21,6 @@ pub use self::SomethingOrNothing::*;
 //@ What this does is define an entire family of types: We can now write
 //@ `SomethingOrNothing<i32>` to get back our `NumberOrNothing`.
 type NumberOrNothing = SomethingOrNothing<i32>;
-
 //@ However, we can also write `SomethingOrNothing<bool>` or even
 //@ `SomethingOrNothing<SomethingOrNothing<i32>>`. In fact, a type like `SomethingOrNothing` is so
 //@ useful that it is already present in the standard library: It's called an *option type*,
@@ -78,7 +77,7 @@ pub trait Minimum : Copy {
 //@ Next, we write `vec_min` as a generic function over a type `T` that we demand to satisfy the `Minimum` trait.
 //@ This requirement is called a *trait bound*.
 //@ The only difference to the version from the previous part is that we call `e.min(n)` instead
-//@ of `std::cmp::min(n, e)`. Rust automatically figures out that `n` is of type `T`, which implements
+//@ of `min_i32(n, e)`. Rust automatically figures out that `e` is of type `T`, which implements
 //@ the `Minimum` trait, and hence we can call that function.
 //@ 
 //@ There is a crucial difference to templates in C++: We actually have to declare which traits
@@ -122,8 +121,6 @@ impl Minimum for i32 {
 }
 
 // We again provide a `print` function.
-
-
 //@ This also shows that we can have multiple `impl` blocks for the same type (remember that
 //@ `NumberOrNothing` is just a type alias for `SomethingOrNothing<i32>`), and we can provide some
 //@ methods only for certain instances of a generic type.