That’s not my experience. I use rust in my web application. It’s compiled to WASM and runs in the browser. About as high level as it gets. And I almost never feel I have to jump through hoops. The only time I do is when I’m implementing something that’s plain impossible in javascript, like zero-copy deserialization.
On the other hand, I constantly have to jump through hoops in javascript. You literally cannot compare two objects for structural equality in JS without jumping through hoops. It’s unbelievable. Yet no one says javascript is not versatile enough to be used in high level contexts.
It is fair to say that the way Rust deals with closures requires too much hoop-jumping to make a truly ergonomic reach equivalent