I have
fn plus_one(x: &i32) -> i32 {
    x + 1
}
fn plus_one_star(x: &i32) -> i32 {
    *x + 1
}
fn plus_one_mut(x: &mut i32) -> i32 {
    x + 1
}
fn plus_one_mut_star(x: &mut i32) -> i32 {
    *x + 1
}
fn main() {
    let a: i32 = 5;
    let mut b: i32 = 5;
    println!("{:?}", plus_one(&a));
    println!("{:?}", plus_one_star(&a));
    println!("{:?}", plus_one_mut(&mut b));
    println!("{:?}", plus_one_mut_star(&mut b));
    // I expect all to print '6' as I never actually mutate b
}
The third function, plus_one_mut, fails to compile with: error[E0369]: binary operation `+` cannot be applied to type '&mut i32'
Why does this function with the mutable reference fail to compile?
 
    