This is something I have been reading more and more lately - "Rust is complex". In the past, people usually brushed it off saying that it's much simpler than C++. But that always felt like saying that a mountain is not very high because it's smaller than the Everest
Rust's philosophy is "frontload the problems", thus complex problems are complex right away. It means it takes a lot of thinking about design, fiddling with data structures, types, looking for elegant design optimizations, but then it works as "intended", compared to a lot of other tools/langs.
Here the author states that the hard (error prone) part is not the coding, but the transliteration from the manufacturer's data sheets. So Rust seems to be adding complexity for no gain at all. (Which is completely fair for a hobbyist project for a keyboard firmware.)
Does this mean Rust should only be used for big systems where that mandatory explicitness about complexity pays off? Does this mean Rust perhaps would benefit from a mode where certain modules/functions are type checked in a different way? (Or that would just make the language even more complex for no significant gain during programming?)
It has essentially become the very thing it sought to destroy. Choosing Rust over C++ is now mostly about the vastly superior package ecosystem, thanks to Cargo.
Rust's tools are better for common cases, but C++ has the vastly superior set of libraries: GPU, embedded, robotics, desktop, mobile, etc.
I recommend watching CppCon and being amazed at how much work is going into the C++ ecosystem right now. Rust is popular in some circles but the programming world is extremely big.
I mean, the author could have removed most of the complexity by using Rust HALs.
They just decided to reimplement from scratch their own different solution. That’s completely fair, but doesn’t allow you to make the complexity argument.
It would be like deciding to start a C++ project without using the C++ std library and arguing that C++ is hard because you had to reimplement std::Tuple...