One reason is that let takes a pattern, so you can do things like:
let (x, mut y) = ...
Another reason is that we feel 'mut' more cleanly communicates mutability than 'var.' Another reason is that we prefer immutability by default, and let/var doesn't communicate that as nicely as let and let mut.There are some discissions about this on the ML archives, RFC repo, or discuss, if you're interested.