¿Cuál es la diferencia entre colocar "mut" antes de un nombre de variable y después de ":"?

Aquí hay dos firmas de funciones que vi en la documentación de Rust:

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

¿Por qué la diferente ubicación demut?

Parece que la primera función también podría declararse como

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta