That is called shadowing, the first variable named age and the second variable named age are actually not the same one.
The second assignment would be a mutation if it didn't start with the let keyword.
This would be an attempt to mutate age:
pub fn run(){
let name = "Calvin";
let age = 48; // mut is required for this to compile
age = 49;
println!("My name is {} and today is my birthday and I am now {}", name, age);
}