I get the feeling that Rust design is concerned more about write-ability of the code than readability. Code has to be maintained, read by random people, comprehended. It will grow up in hundreds of megs on large projects, and it will take time to compile.<p>With the above in mind:<p>&gt; You&#x27;ve asserted this, but not demonstrated it: semicolon usage is consistent in Rust. Rust is not C++, so it doesn&#x27;t necessarily follow the same rules, but it is consistent, even though it may be different.<p>Writing code is consistent and unaffected, code comprehension (debugging, integration efforts, etc) by third parties will be hampered.<p>&gt;Can you elaborate on this? I&#x27;m not exactly sure what you&#x27;re saying.<p>Not importing the entire library will result in faster compilation. Unless rust has a concept similar to precompiled headers, etc. I apologize at this point. I&#x27;m not sure what Rust does in that respect, but my initial thoughts were that as the project grows, the parser will slow on includes. The internal symbol resolver will slow on lookups because too many things are included.<p>All of the above is only if you are trying to match what C++ does for large teams. I guess it&#x27;s up to the developers of the language what direction they want to take it in. More agile or more enterprise oriented.<p>(From personal experience: I was on a team looong time ago, where codebase took 12 hours to compile on a powerful cluster. Any gains, even by few hours, changed schedules drastically)<p>&gt;See above: this kind of thing is about how Rust views coercion and heap allocation: explicit, not implicit.<p>I understand your viewpoint, however three operators on a single object still seems conceptually excessive to me.<p>&gt;Because ranges always iterate forward, from start to end. rev() reverses the direction.<p>Since both are supported, maybe the parser can be made smarter?<p>&gt; I&#x27;m not sure what you&#x27;re referring to here.<p>Well this piece of code:<p><pre><code>  let scores = words.iter()
            .filter(|&amp;word| word &amp; !seven == 0)
            .fold([counts[count];7], |mut scores, &amp;word| {
                for place in 0..7
                     { scores[place] += (word &gt;&gt; bits[place]) &amp; 1; }
                scores
            });
</code></pre>
Is not easily read or debugged ( on which line do you set the breakpoint, etc).<p>Outside of minor things like this, I like what Rust is trying to do. I think it&#x27;s a great effort and I do look forward to where it will lead.