A Sad Day for Rust
I have been complaining about Rust&#x27;s &quot;unsafe&quot; for years. There&#x27;s too much &quot;unsafe&quot; code because there are things that you either can&#x27;t express, or are very hard to express, in safe Rust. I&#x27;ve pointed out partially initialized arrays and backlinks as key trouble spots. Both are potentially fixable. I&#x27;ve gotten back complicated excuses for not dealing with these design problems. There was a serious denial problem in the Rust community. Now it&#x27;s come back to bite them.<p>Language design that forces users to lie to the language leads to this. The classic is C&#x27;s &quot;a pointer is also an array&quot; mindset. When you write<p><pre><code>   int read(int fd, char* buf, size_t buflen)
</code></pre>
that &quot;char *&quot; is a lie. You&#x27;re not sending a pointer to a single character. You&#x27;re sending a reference to an array of unknown size. That design mistake in C has probably been the cause of more serious bugs than any other mistake in the history of programming. If you have to lie to the language, the language is broken.<p>Rust had so much promise, too.