It does still have a traditional assignment operator. You can assign values to mutable variables.
Also I would say let-binds are still pretty much assignment; they just support destructuring. Plenty of languages support that to some extent (JavaScript for example) and you wouldn't say they don't have assignment.
I don't think it affects the ability to overload =
anyway. I think there aren't any situations in Rust where it would be ambiguous which one you meant. Certainly none of the examples you gave compile with both =
and ==
. Maybe there's some obscure case we haven't thought of.
... in one benchmark.