<story><title>I can&apos;t keep up with idiomatic Rust</title><url>https://timidger.github.io/posts/i-cant-keep-up-with-idiomatic-rust/</url></story><parent_chain><item><author>sgift</author><text>&amp;gt; What i find annoying about Rust&amp;#x27;s changes is that some of them are so trivial - they change the language for such small improvements. async&amp;#x2F;await is not in that category, for sure. But Ok-wrapping actually is. The need to Ok-wrap results is a minor annoyance at most. Ditto a bunch of the problems solved by match ergonomics changes.&lt;p&gt;So what? Then don&amp;#x27;t use them. The whole point of full backward compatibility is that you don&amp;#x27;t have to use new features. This perceived need to always use the newest feature is only in the head of some developers.&lt;p&gt;Neither in the blog post nor here do I see any reason to not make the experience better for people who want it. Even if it&amp;#x27;s just a &amp;quot;minor&amp;quot; (very subjective, I love the match ergonomics enhancements) annoyance that&amp;#x27;s fixed by it.</text></item><item><author>twic</author><text>&amp;gt; it&amp;#x27;s now slowly backfilling the missing features bit by bit&lt;p&gt;This isn&amp;#x27;t slow.&lt;p&gt;Java went three years, from December 1998 to February 2002, without any language changes. And to be honest, even that wasn&amp;#x27;t that slow!&lt;p&gt;&amp;gt; Every addition to the language is bikeshedded to death&lt;p&gt;Not to death, because many of them don&amp;#x27;t die!&lt;p&gt;What i find annoying about Rust&amp;#x27;s changes is that some of them are so trivial - they change the language for such small improvements. async&amp;#x2F;await is not in that category, for sure. But Ok-wrapping actually is. The need to Ok-wrap results is a minor annoyance at most. Ditto a bunch of the problems solved by match ergonomics changes.&lt;p&gt;I think the root of the problem is that the changes are driven by a small core of Rust programmers - many working on Rust itself or some of its flagship projects - who are actively involved in the discussions around Rust. They tend to view change as natural, and the cost of change as low. I believe there is a larger group of Rust programmers who are not actively involved in these discussions, and are maybe not spending 100% of their time on Rust, for who the cost is higher. But we don&amp;#x27;t hear as much from them.</text></item><item><author>pornel</author><text>Rust seems to change constantly, because &lt;i&gt;it&amp;#x27;s changing so slowly&lt;/i&gt;. The 1.0 release has held back a lot of stuff to avoid stabilizing wrong things, and it&amp;#x27;s now slowly backfilling the missing features bit by bit.&lt;p&gt;Instead of starting with a fat standard library, it started with minimal one and now each release adds 2-3 functions that could have been there in 2015. But none of it is idiom-changing revolution. These are mostly convenience functions, and you don&amp;#x27;t have to use them all just because they&amp;#x27;re there.&lt;p&gt;Every addition to the language is bikeshedded to death, goes through betas, revisions, refinements, before being stabilized &lt;i&gt;years later&lt;/i&gt;. The first experimental release of async was &lt;i&gt;4 years ago&lt;/i&gt; and it has landed last November. So you may hear about new features a lot and they churn in nightlies, but actual big changes reach stable rarely.&lt;p&gt;Apart from async&amp;#x2F;await, since 2015 Rust made only 2 changes to how idiomatic code looks like (? for errors, and 2018 modules), and both of them can be applied to code automatically. I maintain over 60 Rust crates, some of them as old as Rust itself. All work fine as they are, and running `cargo fix` once was enough to keep them looking idiomatic.</text></item></parent_chain><comment><author>karatestomp</author><text>You still have to understand all the new stuff to read other people’s code. And the old way, so you can read older code. And if there are other ways to do something that are or have recently been in common use, those too. You end up memorizing a bunch of crap for one actual operation.</text></comment>
<story><title>I can&apos;t keep up with idiomatic Rust</title><url>https://timidger.github.io/posts/i-cant-keep-up-with-idiomatic-rust/</url></story><parent_chain><item><author>sgift</author><text>&amp;gt; What i find annoying about Rust&amp;#x27;s changes is that some of them are so trivial - they change the language for such small improvements. async&amp;#x2F;await is not in that category, for sure. But Ok-wrapping actually is. The need to Ok-wrap results is a minor annoyance at most. Ditto a bunch of the problems solved by match ergonomics changes.&lt;p&gt;So what? Then don&amp;#x27;t use them. The whole point of full backward compatibility is that you don&amp;#x27;t have to use new features. This perceived need to always use the newest feature is only in the head of some developers.&lt;p&gt;Neither in the blog post nor here do I see any reason to not make the experience better for people who want it. Even if it&amp;#x27;s just a &amp;quot;minor&amp;quot; (very subjective, I love the match ergonomics enhancements) annoyance that&amp;#x27;s fixed by it.</text></item><item><author>twic</author><text>&amp;gt; it&amp;#x27;s now slowly backfilling the missing features bit by bit&lt;p&gt;This isn&amp;#x27;t slow.&lt;p&gt;Java went three years, from December 1998 to February 2002, without any language changes. And to be honest, even that wasn&amp;#x27;t that slow!&lt;p&gt;&amp;gt; Every addition to the language is bikeshedded to death&lt;p&gt;Not to death, because many of them don&amp;#x27;t die!&lt;p&gt;What i find annoying about Rust&amp;#x27;s changes is that some of them are so trivial - they change the language for such small improvements. async&amp;#x2F;await is not in that category, for sure. But Ok-wrapping actually is. The need to Ok-wrap results is a minor annoyance at most. Ditto a bunch of the problems solved by match ergonomics changes.&lt;p&gt;I think the root of the problem is that the changes are driven by a small core of Rust programmers - many working on Rust itself or some of its flagship projects - who are actively involved in the discussions around Rust. They tend to view change as natural, and the cost of change as low. I believe there is a larger group of Rust programmers who are not actively involved in these discussions, and are maybe not spending 100% of their time on Rust, for who the cost is higher. But we don&amp;#x27;t hear as much from them.</text></item><item><author>pornel</author><text>Rust seems to change constantly, because &lt;i&gt;it&amp;#x27;s changing so slowly&lt;/i&gt;. The 1.0 release has held back a lot of stuff to avoid stabilizing wrong things, and it&amp;#x27;s now slowly backfilling the missing features bit by bit.&lt;p&gt;Instead of starting with a fat standard library, it started with minimal one and now each release adds 2-3 functions that could have been there in 2015. But none of it is idiom-changing revolution. These are mostly convenience functions, and you don&amp;#x27;t have to use them all just because they&amp;#x27;re there.&lt;p&gt;Every addition to the language is bikeshedded to death, goes through betas, revisions, refinements, before being stabilized &lt;i&gt;years later&lt;/i&gt;. The first experimental release of async was &lt;i&gt;4 years ago&lt;/i&gt; and it has landed last November. So you may hear about new features a lot and they churn in nightlies, but actual big changes reach stable rarely.&lt;p&gt;Apart from async&amp;#x2F;await, since 2015 Rust made only 2 changes to how idiomatic code looks like (? for errors, and 2018 modules), and both of them can be applied to code automatically. I maintain over 60 Rust crates, some of them as old as Rust itself. All work fine as they are, and running `cargo fix` once was enough to keep them looking idiomatic.</text></item></parent_chain><comment><author>umanwizard</author><text>I can’t force other people not to use changes, which means I will always need the latest version of rustc installed if I want to be able to build a relatively complete selection of the corpus of Rust code, which in turn makes it very difficult if not impossible for rust software to be distributed in typical OS package managers.&lt;p&gt;I.e., imagine how Debian or Ubuntu could package things if the definition of C++ changed every six weeks, given that the compiler version should change as little as possible during a major OS version cycle? This is a major blocker holding Rust back from mainstream adoption, IMO.</text></comment>