title: Moved values when multiplying numbers
body: <p>I'm trying to use the following code:</p>
  
  <pre><code>fn get_max(string:Vec&lt;BigUint&gt;) -&gt; BigUint {
      let mut max:BigUint = num::zero();
  
      for i in 0..(string.len()-13) {
          let mut prod:BigUint = num::one();
          for j in i..(i+13) {
              prod.mul(&amp;string[j]);
          }
  
          if prod.clone().gt(&amp;max) {
              max = prod;
          }
      }
  
      max
  }
  </code></pre>
  
  <p>But I get the following error when I try to compile:</p>
  
  <pre><code>src/main.rs:13:4: 13:8 error: use of moved value: `prod`
  src/main.rs:13          prod.mul(&amp;string[j]);
                          ^~~~
  note: `prod` was previously moved here because it has type `num::bigint::BigUint`, which is non-copyable
  src/main.rs:16:6: 16:10 error: use of moved value: `prod`
  src/main.rs:16      if prod.clone().gt(&amp;max) {
                         ^~~~
  src/main.rs:13:4: 13:8 note: `prod` moved here because it has type `num::bigint::BigUint`, which is non-copyable
  src/main.rs:13          prod.mul(&amp;string[j]);
                          ^~~~
  src/main.rs:17:10: 17:14 error: use of moved value: `prod`
  src/main.rs:17          max = prod;
                                ^~~~
  src/main.rs:13:4: 13:8 note: `prod` moved here because it has type `num::bigint::BigUint`, which is non-copyable
  src/main.rs:13          prod.mul(&amp;string[j]);
                          ^~~~
  error: aborting due to 3 previous errors
  </code></pre>
  
  <p>As far as I can tell, I'm never moving <code>prod</code>, so what is wrong?</p>