Actually rust is a grate language for programmers of the less capable end of the spectrum.
While it allows clever abstractions it generally discouraged and recommended to write simple code.
The borrow checker might seem like a clever abstraction, but it's just a build in code analytics tool you should use anyway when using C or C++ or well any language, and it generally nudges you to better structured code.
> Then, as now, they were people who hadn't had much contact with the average software developer and with the realities of software mass-production.
Except that more than just a few decisions in the rust design process where strongly influenced by the feedback of average developers, including people which just got started with programming.
Wrt. C++ I can completely agree, it's a completely over engineered language with endless gotchas with silently sneak into you code without you noticing and potentially causing UB if compiled with some compiler in some optimization levels for some target. Making such bugs completely bonkers to track down.
On the other hand in (safe) rust many of the problems user have come from the language helping you to not run into any of this and other bugs.
And all "hidden" complexity rust has is normally designed in a way so that you don't need to know it to use rust or even things related to it as long as you don't want to create some low level primitives which involve unsafe code.