Почему бинарный оператор + не работает с двумя & 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);
}

Почемуnumber + number не удалось, ноnumber.add(number) работает?

В качестве бонусного вопроса: вышеперечисленное распечатывает

10
5

Правильно ли я предположить, чтоtest еще 5, потому что данныескопированный к увеличению? Единственный способ, которым оригиналtest переменная может быть видоизмененаincrement функция была бы, если бы она была отправлена ​​какBox<int>, право?

Ответы на вопрос(1)

Ваш ответ на вопрос