> Rust is “hard”. (It’s not, by the way. It’s not hard. It’s truly not.)<p>As someone who likes Rust, it takes days or weeks to wrap your head around the borrow checker, and "spaghetti object graph" code patterns in other languages don't transfer well to Rust (Cell<i32> is more awkward to use than C++ int, and RefCell introduces runtime panics). I've had the misfortune of dealing with code written in <i>unsound unsafe Rust</i> which freely converts aliased raw pointers into &mut, even when they likely conflict with other & or &mut. I still don't know how to rewrite it in safe Rust.<p>Rust is built around making mutable multiple ownership awkward. This is fine (and often results in more understandable code) when you're working in single-ownership code conceived and built around Rust, but when you're using something like gtk-rs (which binds to a C framework built around reference counting and cyclic parent pointers), Rust makes mutating shared state awkward (adding extra state alongside GTK widgets requires RefCell or similar), and reference-counted callbacks awkward (the clone! macro breaks rustfmt).<p>> Nobody thinks you’re smarter or better because you can remember all the pitfalls.<p>Oh, I know some people who think that way. Personally I think Rust teaches you the same things as C++ code (reasoning about state, knowing what parts of your code reference an object, knowing when to free an object).<p>> Soon your solution won’t be faster to market, and will be more expensive to maintain to boot. And someone’s going to eat your lunch while you complain.<p>There's no Rust GUI framework as comprehensive and mature as Qt. (Then again, there's no C++ GUI framework as clean, usable, and stable as Qt should've been. And people are moving to web UIs.) And some (not all) Rust libraries are amateurish from people who don't know what they're doing; for example, <a href="https://lib.rs/crates/samplerate" rel="nofollow">https://lib.rs/crates/samplerate</a> allocates on every conversion (which isn't safe for real-time audio generation) rather than writing into a preallocated &mut buffer. <a href="https://docs.rs/hound/latest/hound/" rel="nofollow">https://docs.rs/hound/latest/hound/</a> is a WAV file reader which branches on every sample (IDK if it gets optimized out), rather than performing error checking at file open time and bounds checking once per block, which feels bizarre to me.<p>Re. "An ability to compensate for the shitty state of technology" that exists today isn’t some kind of a competitive “moat”.", writing your own bindings to C code, or performing unsafe C calls directly, instead of using the ergonomic libraries which don't work properly, <i>is</i> compensating for shitty technology.<p>IMO this article comes pretty close to flamebait and trolling.