Warum funktioniert der Binary + -Operator nicht mit two & mut int?

fn increment(number: &mut int) {

    // this fails with: binary operation `+` cannot be applied to type `&mut int`
    //let foo = number + number;

    let foo = number.add(number);

    println!("{}", foo);
}

fn main() {
    let mut test = 5;
    increment(&mut test);

    println!("{}", test);
}

Warum tutnumber + number scheitern abernumber.add(number) funktioniert?

Als Bonusfrage: Der obige Ausdruck

10
5

Habe ich Recht, das anzunehmen?test&nbsp;ist immer noch 5, weil die Daten sindkopiert&nbsp;um zu erhöhen? Der einzige Weg, dass das Originaltest&nbsp;Variable könnte durch die mutiert werdenincrement&nbsp;funktion wäre wenn es als senden wäreBox<int>, richtig?