shadowing
Declaring a new variable with the same name as an old one.
Shadowing declares a new binding with an existing name, hiding the old one; the new binding may have a different type.
Examples
let price = 20; let price = price * 2; let price = price + 5;ends withpriceequal to 45; eachletmakes a new variable.let tag = tag.len();reuses the nametagfor ausize, whichlet mutcould not do.