title: How to edit values in `Option` by reference
body: <p>Given some list of options of big structs:</p>
  
  <pre><code>struct big_struct {
      a:i32 // Imagine this is some big datatype
  }
  
  let mut tester:Vec&lt;Option&lt;(big_struct,big_struct)&gt;&gt; = vec![
      None,
      Some((big_struct{a:1},big_struct{a:2})),
      None,
  ];
  </code></pre>
  
  <p>I'm iterating over this list, by another check I know which elements have <code>Some</code>, on these elements I want to call a function which edits their values</p>
  
  <p>Example function:</p>
  
  <pre><code>fn tester_method(pos:&amp;mut (big_struct,big_struct)) {
      pos.0 = big_struct {a:8};
      pos.1 = big_struct {a:9};
  }
  </code></pre>
  
  <p>Function call which doesn't work: <code>tester_method(&amp;mut tester[1].unwrap());</code></p>
  
  <p>How can I do this?</p>
  
  <p>On the function call I get the error:</p>
  
  <pre><code>cannot move out of index of `std::vec::Vec&lt;std::option::Option&lt;(big_struct, big_struct)&gt;&gt;`
  move occurs because value has type `std::option::Option&lt;(big_struct, big_struct)&gt;`, which does not implement the `Copy` traitrustc(E0507)
  main.rs(132, 24): consider borrowing the `Option`'s content
  </code></pre>