Какая разница между размещением «mut» перед именем переменной и после «:»?

Вот две сигнатуры функций, которые я видел в документации Rust:

fn modify_foo(mut foo: Box<i32>) { *foo += 1; *foo }
fn modify_foo(foo: &mut i32) { *foo += 1; *foo }

Почему разное размещениеmut?

Кажется, что первая функция также может быть объявлена ​​как

fn modify_foo(foo: mut Box<i32>) { /* ... */ }

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

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