tweak introduction
[rust-101.git] / src / part02.rs
index 7261f1900ac989b8a920367e5ebbc32b84420f7d..b8641df5877b32d0116c21e32e765ddd9067561d 100644 (file)
@@ -78,10 +78,9 @@ trait Minimum : Copy {
 // we cannot call `min`. Just try it! There is no reason to believe that `T` provides such an operation.
 // This is in strong contrast to C++, where the compiler only checks such details when the
 // function is actually used.
-fn vec_min<T: Minimum>(v: &Vec<T>) -> SomethingOrNothing<T> {
+fn vec_min<T: Minimum>(v: Vec<T>) -> SomethingOrNothing<T> {
     let mut min = Nothing;
     for e in v {
-        let e = *e;
         min = Something(match min {
             Nothing => e,
             Something(n) => T::min(n, e)
@@ -125,7 +124,7 @@ fn read_vec() -> Vec<i32> {
 }
 pub fn part_main() {
     let vec = read_vec();
-    let min = vec_min(&vec);
+    let min = vec_min(vec);
     min.print();
 }
 
@@ -136,7 +135,7 @@ pub fn part_main() {
 // *for an existing type*. With the hierarchical approach of, e.g., C++ or Java,
 // that's not possible: We cannot make an existing type suddenly also inherit from our abstract base class.
 
-// **Exercise**: Define a trait "Print" to write a generic version of `SomethingOrNothing::print`.
+// **Exercise**: Define a trait `Print` to write a generic version of `SomethingOrNothing::print`.
 // Implement that trait for `i32`, and change the code above to use it.
 // I will again provide a skeleton for this solution. It also shows how to attach bounds to generic
 // implementations (just compare it to the `impl` block from the previous exercise).