Sometimes, you still want to immutably borrow a mutable variable. Otherwise, you wouldn't be able to have multiple references to a variable declared with `mut`, which would be an unnecessary limitation.
EDIT: Here's an example of something that wouldn't otherwise work if borrows of mutable variables were implicitly mutable:
struct Point {
x: i32,
y: i32,
}
fn add(p1: &Point, p2: &Point) -> Point {
let x = p1.x + p2.x;
let y = p1.y + p2.y;
Point { x: x, y: y }
}
fn main() {
let mut some_point = Point { x: 1, y: 1 };
some_point.x = 2;
// `some_point` is borrowed twice here, which wouldn't be possible if the borrows were mutable.
let other_point = add(&some_point, &some_point);
println!("({}, {})", other_point.x, other_point.y);
}