| I suspect the things that people are reacting to are a mixture of the following: * Types in Rust use prefixing to create derived types whereas C family languages generally use postfixing. A pointer is i32, not int; an array [i32; 5], not int[5], etc. This makes special characters appear more heavily at the beginning of the scan line, and probably makes them slightly more noticeable as a result. * Lifetimes have the form 'a, and that single quote is likely to bother a lot of people (I know it bothers me). * Unqualified name lookup in Rust is a bit weaker than other languages, which makes the scope operator (::) more common. * Passing in explicit generic type arguments for a function requires an extra :: for seemingly no reason. * Similarly, macros require an explicit ! in the name to invoke. Given that println! (and formatting in general) is a macro and not a function, this means you get a lot of extra uses of ! that's unexpected for C family code. * Again, the try operator (also decently common) is another random special character. * Attributes also use #[] syntax, or sometimes #![]. While C++11 did use [[]] to designate its attributes, it's also something that always felt a bit ugly to me personally (I find the @Decorator() pattern from Java or Python to be a visually cleaner way to do attributes). In short, Rust generally has a higher density of special characters than other C family languages, and I think that contributes to a sense of ugliness. |
There is a very good reason for this. Behold, the Bastion of the Turbofish.
https://github.com/rust-lang/rust/blob/master/tests/ui/parse...