title: How can I solve "use of moved value" and "which does not implement the `Copy` trait"?
body: <p>I'm trying to read the values from a vector and use the values as indexes to perform an addition:</p>
  
  <pre><code>fn main() {
      let objetive = 3126.59;
  
      // 27
      let values: Vec&lt;f64&gt; = vec![
          2817.42, 2162.17, 3756.57, 2817.42, -2817.42, 946.9, 2817.42, 964.42, 795.43, 3756.57,
          139.34, 903.58, -3756.57, 939.14, 828.04, 1120.04, 604.03, 3354.74, 2748.06, 1470.8,
          4695.71, 71.11, 2391.48, 331.29, 1214.69, 863.52, 7810.01,
      ];
  
      let values_number = values.len();
      let values_index_max = values_number - 1;
  
      let mut additions: Vec&lt;usize&gt; = vec![0];
  
      println!("{:?}", values_number);
  
      while additions.len() &gt; 0 {
          let mut addition: f64 = 0.0;
          let mut saltar: i32 = 0;
  
          // Sumar valores en additions
          for element_index in additions {
              let addition_aux = values[element_index];
              addition = addition_aux + addition;
          }
      }
  }
  </code></pre>
  
  <p>I get the following error. How can I solve it?</p>
  
  <pre class="lang-none prettyprint-override"><code>error[E0382]: use of moved value: `additions`
    --&gt; src/main.rs:18:11
     |
  18 |     while additions.len() &gt; 0 {
     |           ^^^^^^^^^ value used here after move
  ...
  23 |         for element_index in additions {
     |                              --------- value moved here
     |
     = note: move occurs because `additions` has type `std::vec::Vec&lt;usize&gt;`, which does not implement the `Copy` trait
  
  error[E0382]: use of moved value: `additions`
    --&gt; src/main.rs:23:30
     |
  23 |         for element_index in additions {
     |                              ^^^^^^^^^ value moved here in previous iteration of loop
     |
     = note: move occurs because `additions` has type `std::vec::Vec&lt;usize&gt;`, which does not implement the `Copy` trait
  </code></pre>