Re: Veteran C and C++ programmers, however, are understandably worried...
> From what I read, Rust is a far cry from a Java-like garbage collector
Rust is a programming language, not a memory allocation technique.
Nothing stops someone from implementing a garbage collector in Rust, or for that matter in C or C++. Horses for courses.
> which essentially allows memory to leak until you run out of memory then makes everything wait while it tidies up
That's not fair. Modern GC implementations can be used which do a lot of clever stuff in the background. They can't reduce the delay to zero, but you can tune high-volume applications so that the delays are measured within single-digit milliseconds.
It's a skillset in itself to understand GC and learn how to measure and tune its behaviour, so I won't downplay the fact that it's overhead. But there's a different skillset needed for managing memory in C. Assuming that you don't have bugs that leak memory, you still need to consider things like memory fragmentation. The memory allocation routines are not instantaneous - they do have to spend CPU cycles looking for blocks of memory in the heap that match the size you requested. Linux/etc allow you to avoid this by allowing essentially infinitely large heaps and falling back on the virtual memory subsystem to deal with it, which works well but is wasteful.
> On the other hand, Rust fans seem to sweep bounds checking (that is also an aspect of Rust) under the rug or insist that everyone else does it and you should just get with the program.
I've no idea what this means, but Rust enforces bounds checking at compile time, so I suspect your research is deficient.
> I will say that multiple layers shouldn't exist in a driver that is written for performance. Calling a subroutine imposes a huge performance penalty.
Rust doesn't "call a subroutine" (since when was calling subroutines a problem ?). The memory allocation stuff is done at compile time.