Qual é a diferença entre colocar "mut" antes do nome de uma variável e depois do ":"?

Aqui estão duas assinaturas de funções que vi na documentação do Rust:

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

Por que o posicionamento diferente demut?

Parece que a primeira função também pode ser declarada como

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

questionAnswers(2)

yourAnswerToTheQuestion