If rust handle dereferencing automatically then why we need explicit dereferencing?
let x = 5;
let y = &x; // y is a reference to x
println!("{}", x); // Prints: 5
println!("{}", y); // Prints: 5 (automatically dereferenced)
println!("{}", *y); // Prints: 5 (explicitly dereferenced)
let z = y + 2; // value is being added to reference
println!("{}",z); // Prints: 7