Not an answer, more of an observation. I am on the same chapter trying to learn Rust.
Am correct that the compiler creates two storage locations x_0 and x_1 to prevent unintended memory errors? And both are named "x" in the code?
Doesn't this make intended variable changes errors MORE likely and very hard to find because I now have two real memory locations the code calls the same thing and changes depending on where they are in the code. I could have a "Let" 1000 lines of code before the second "Let" and have no clue what is going on. It makes scope problems very difficult to diagnose.
It seems to me to encourage poor programming habits and reduce clarity. In short, what is the point of shadow variables except to be a lazy programmer?