title: Why does the binary + operator not work with two &mut int?
body: <pre><code>fn increment(number: &amp;mut int) {
  
      // this fails with: binary operation `+` cannot be applied to type `&amp;mut int`
      //let foo = number + number;
  
      let foo = number.add(number);
  
      println!("{}", foo);
  }
  
  fn main() {
      let mut test = 5;
      increment(&amp;mut test);
  
      println!("{}", test);
  }
  </code></pre>
  
  <p>Why does <code>number + number</code> fail but <code>number.add(number)</code> works?</p>
  
  <p>As a bonus question: The above prints out </p>
  
  <pre><code>10
  5
  </code></pre>
  
  <p>Am I right to assume that <code>test</code> is still 5 because the data is <strong>copied</strong> over to increment? The only way that the original <code>test</code> variable could be mutated by the <code>increment</code> function would be if it was send as <code>Box&lt;int&gt;</code>, right?</p>