When you compile with optimizations, you pay the cost for all of Rust's abstractions at compile time. When you compile in debug mode, you play the cost for Rust's abstractions at run time.
It took me sometime to let go and embrace getting things working before optimizing. It was a major breakthrough on that journey when I realized that ALL my python variables are Rc<RefCell<_>> , so any chance I had to make a variable that was less complicated than that was already a big optimization. If 1/10 Rust variables had to be that complicated it would not feel good, but it would already be 90% better. So if 1/50 make the code ezere to read and maintain then do it!
I guess it's worth mentioning that Reddit's markdown parser is written in Rust, based on comrak, and Reddit is running a bunch of Rust every single page request. By CPU cycles, Reddit has got to be one of the biggest users of Rust there is.
What people do with Rust, specifically, is they tell you that once you "figure out" the borrow checker, it's never a problem again and your code design just automatically "improves" (by what metric?). But that's not really true. The borrow checker definitely hamstrings certain things. It's okay to admit that.
As a Python programmer with limited experience with compiled languages, Rust code was more intimidating to read or look at than C++, Java or Go. After only an hour, I am overwhelmed by the sheer beauty and mature design of this language - it almost reads like Python or as well as any compiled language can. I cannot believe that I am smitten by Rust within an hour. Its features seem, obvious.
The config server is currently the most stable, reliable, well-tested and idempotent part of the entire system! I have not had a single hiccup or performance issue out of Calloop + ZMQ + signals + etc. and 99% of my dev time is on the actual config logic, not event loop stuff.
Rust favours security over convenience. Rust does not want you to make silly little mistakes than can waste so much of your time debugging, which in the end makes it more convenient.
Why do I use the letter ‘o’ for my generic closure param name? [...] I recently realized that since Rust uses pipes to enclose a param block, using ‘o’ makes the block look like a TIE fighter. I am not a terribly serious person.
Describing Rust as a systems programming language in 2021 is like describing Microsoft as Windows or Google as search. Yes, Rust is equipped for systems programming, but its applicability is much wider.