I think this is a misuderstanding.
let x = 13;
is a hard guarantee. It guarantees that x will not change.
You can make a copy and change that, but that's not a loophole to that rule: x will still not change.
The same is true for:
let x = String::from("abc");
You have a hard guarantee: whenever you use x, it will contain "abc".
You can move the string elsewhere and change it there, but then it's no longer x that you're changing. That's not a loophole.