Difference between inferring and specifying type explicitly of let binding?

This is a difference between moving and re-borrowing of mutable references:

let z = y; // this is a move because mutable references move (i.e. they're not copyable)
let z: &mut i32 = y; // this is an implicit reborrow
let z = &mut *y; // an explicit reborrow