<story><title>Five Years of Rust</title><url>https://blog.rust-lang.org/2020/05/15/five-years-of-rust.html</url></story><parent_chain><item><author>jasode</author><text>Now that there&amp;#x27;s been 5 years since v1.0, is there any consensus on design mistakes that Rust made?  Any mistakes that people wish they could turn back time and do differently but can&amp;#x27;t because it would break compatibility with too much existing code out there?  That&amp;#x27;s the more interesting list to me.</text></item></parent_chain><comment><author>pornel</author><text>There isn&amp;#x27;t much. Rust has deprecated some mistakes (like Error::cause). The editions mechanism allowed fixing some issues (like unintuitive module paths).&lt;p&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;rust-lang&amp;#x2F;rust&amp;#x2F;issues?q=label%3Arust-2-breakage-wishlist&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;rust-lang&amp;#x2F;rust&amp;#x2F;issues?q=label%3Arust-2-br...&lt;/a&gt;&lt;p&gt;• Struct literal syntax should have used C99 syntax. The language uses `name:type` everywhere except struct literals which use `name:value`, and this gets in the way of adding new syntax (type ascriptions).&lt;p&gt;• `Box` is semi-magical. Maybe it could have been a regular struct. Or maybe magical all the way to allow placement new and destructuring.&lt;p&gt;• Types are in borrowed, owned-fixed-size and owned-growable variants, but naming of them is a bit ad-hoc. There&amp;#x27;s str&amp;#x2F;String, but Path&amp;#x2F;PathBuf (instead of e.g. String&amp;#x2F;StringBuf or path&amp;#x2F;Path).&lt;p&gt;• Split between libcore and libstd is awkward to manage and not a good fit for WASM. It could have been one libstd with feature toggles (this might still happen).&lt;p&gt;• Some people think split between Eq and PartialEq is an overkill, and just makes floats annoying.&lt;p&gt;There are things that are still unsolved in Rust, like umovable types and self-referential structs. But it&amp;#x27;s hard to say they&amp;#x27;re a mistake — as far as we know, they&amp;#x27;re a necessary limitation to make other useful features work.</text></comment>
<story><title>Five Years of Rust</title><url>https://blog.rust-lang.org/2020/05/15/five-years-of-rust.html</url></story><parent_chain><item><author>jasode</author><text>Now that there&amp;#x27;s been 5 years since v1.0, is there any consensus on design mistakes that Rust made?  Any mistakes that people wish they could turn back time and do differently but can&amp;#x27;t because it would break compatibility with too much existing code out there?  That&amp;#x27;s the more interesting list to me.</text></item></parent_chain><comment><author>bryanlarsen</author><text>The &amp;quot;2018 edition&amp;quot; of Rust made breaking changes to the syntax (but the core stayed compatible, so 2015 edition and 2018 edition Rust can be used simultaneously on the same project).&lt;p&gt;They then said that they&amp;#x27;d probably do the same thing in 2021.&lt;p&gt;Now they&amp;#x27;re debating whether a 2021 edition is needed since there aren&amp;#x27;t any breaking changes with broad support except for the removal of deprecated syntax and APIs.&lt;p&gt;This is strong evidence that the answer to your question is &amp;quot;no&amp;quot;.</text></comment>