Indeed, this is my main issue with rust; poor syntax and expression. It is really a declarative language (think about let and unifications) falsely, and hence, confusingly, represented in imperative syntax. This makes it much harder to correctly read and debug. And then you have disjunctive syntax with decorators used for should be core language features like traits, and bizzare idiocy, like who, in their right mind, thought it was a good idea to use the presence or absence of a ; at the end of a statement to express a "return"?? Something like Haskell would have been a much better starting point rather than even trying to stick it into c syntax.
So the basic problem is you trade off one set of problems for another. Sure the code compiles correctly and is promised to run without crashing. Compiles correctly but wrong and logically buggy is no better than compiles correctly and may crash if you cannot easily read or code review the code and spot logical errors in it. C is easy to make bugs in, but it is often also easy to spot at least logical bugs in it, too. Rust code is more like perl at review time.