On the down side, they didn't leave garbage collection out entirely.

C++ needs its runtime for a lot more than RTTI. My understanding of C++ is that its so limited without its runtime as to be nearly useless. Rust seems to retain much of its character still, and certainly has enough expressivity to bootstrap its full self.

Rust is a classic example of what happens when you try to anticipate everything that could ever go wrong, and then build a language feature that tries to make that less dangerous.

There is no GC in Rust. Not even as a library.They're removing the GC'd pointer type since its existence is a bald-faced lie (it's implemented via a reference counting implementing).Depends on implementation. You need RTTI for typeid and dynamic_cast, you need a library of some kind for IOStreams and any other parts of the standard library that aren't purely in headers (today, that's likely to include std::thread and a few others), you need a stack unwinding library (same as Rust), etc.You've been able to use C++ without more than libc (or even without that) on UNIX-like systems for many years. You just have to switch off various language features and avoid certain library calls that game developers tend to hate anyway (RTTI, exceptions, IOStreams, etc.).Not really. They're using a functional design pattern that many consider to be simpler, easier to reason about, and easier to teach. The only funky thing they've really added that is in any way new, complicated, or not (yet) fully understood is the explicit lifetime markup, which gets simpler as time goes on.The standard library is different, but more fault tolerant. Its standard threading model is based on isolates, for example, though you're still able to use plain threads and hard-to-debug C-like synchronization primitives if you really want.I think it's 5-10 years out before Rust has even a shot of becoming mainstream. A large part of this is inertia. In games, for instance, we need not only ports/wrappers of open source libraryes but also for things like Havok, Scaleform, Enlighten, Umbra, Morpheme, WWise, and dozens and dozens of other libraries. C++ libraries that cannot be easily imported with Rust's macro-unfriendly C-only FFI interfaces. This is the same problem faced by Go, D, and all the other C++ killers: C++ went unchallenged long enough that it's now almost at the same level as C in terms of being a core glue language, yet it's so complex and so much is dependent on parsing its full headers (seeing vtable layouts, for instance) that supporting it in your FFI system is damn hard.