Obviously, Rust, with it's run time checks, can't match the performance of C without those checks.
I get that it's tempting to brush off backing up your claim with the word "obviously" especially if the claim sounds so reasonable. But you're actually wrong here. I encourage you to look into the details. Most of the checks are done by the compiler at compile-time incurring no runtime cost. And with respect to array bounds checking
I see no compelling reason to switch to Rust.
Well, with your attitude and preconceived notions, it doesn't surprize me. You don't really know what Rust has to offer.
If having those run time checks "built in" is desirable enough, I think it would make more sense to re-introduce those checks to C compilers, (Yes, I know, Rust has other features "built in", but most, if not all, of those features are available in libraries with many years of use and testing. (They might even be used by Rust.))
The magic is in Rust's type system. That's how it's possible to avoid dangling pointers without incurring any runtime costs or adding a garbage collector. Show me that C library that does it for C. Sheesh! Array bounds safety is probably the most boring thing about Rust. Everybody can have array bounds safety easily.
I don't see why that should be the case. While interfacing languages like Python and Rust typically requires a C interface—C being the lingua franca—Rust code could still internally make use of safer alternatives, effectively reducing the attack surface. I say that even without having checked how all those mentioned projects ease the Python/Rust integration.
What's your argument for the unavoidable performance regressions? Rust achieves most of its safety using compile-time checks based on better type system. Those don't incur any runtime penalties. The way abstraction works in Rust is pretty much the same as in C++ and sometimes even better than that. I can even give you multiple examples for that if you care to check it out off the top of my head:
Which of Rust's design choices am I missing that supposedly intrinsically imply a runtime penalty?
but [Rust] lacks features such as inheritance.
You overrate inheritance. Even in C++ the trend is to favour composition over inheritance. One good reason to use inheritance in C++ is to create something similar to what Java calls an "interface": basically an abstract base class which you can derive from using one or more concrete classes to do dynamic dispatch. In Rust you can get the same thing via traits -- no inheritance necessary for that.
I'm not saying inheritance is never useful. But in Rust you can get by pretty well without it because of composition and traits. That being said, The Rust community is open for suggestions for language extensions. If you feel something is missing, start a discussion and/or write an RFC for it.
"This isn't brain surgery; it's just television." - David Letterman