# Variables - Are Immutable by default - can be inferred but sometimes needs explicit typing ```rust let foo = 5; ``` - Need to add mut keyword to enable rewriting, generally avoid unless actually used ```rust let mut bar = 6; ``` # SHADOWING #### Cannot have mutable shadows allows for reuse of namespace instead of spaces_str and spaces_num ```rust let spaces = " _ _ "; let spaces = spaces.len(); // will output 5 instead of " _ _ " beacuse that is how long it is // the shadow of spaces (first) wont be printed until the overshadow of spaces goes out of scope println!("{spaces}"); // output: 5 ``` not allowed shadow ```rust let mut spaces = " _ _ "; spaces = spaces.len(); ``` cannot change type of variable once declared