In [[Rust]], **all variables are immutable by default**. To be able to assign a new value to a variable, we need to explicitly make them mutable: ```rust let mut x = 5; x = 6; println!("The value of x is: {x}"); ``` On the other hand, we have constants. **Constants are not immutable by default - they are always immutable**. To declare them, we need to use the `const` keyword: ```rust const THREE_HOURS_IN_SECONDS: u32 = 60 * 60 * 3; ``` In Rust, it is possible to **shadow** variables - simply declare a new variable using an existing name to shadow a within the scope. It is important to understand that: - **Shadowing is not mutability**: we are not changing the value of the variable. It is a new one entirely. - Shadowing allows to use a different [[Rust Data Types|data type]] (since it is a different variable).