So is Python, JavaScript, Java, OCaml, Haskell...
A more distinguishing feature of Rust is not only that it is memory safe but also that it doesn’t have a GC.
In any case the presence of a single unsafe block can make the program no longer memory safe. Of course, if used appropriately, it vastly reduces the audit surface compared to something like C++.
This is a dealbreaker in a lot of contexts where garbage collection pauses would be unacceptable.
<rust-evangelism-strike-force>
FEARLESS CONCURRENCY
</rust-evangelism-strike-force>
Rust makes it easier to write bug-free concurrent code. Webrender relies on this and I'm not sure Mozilla could have pulled it out in C++ in the same time frame, if at all.Trying to use raw threads and ad-hoc futures is going to be difficult, but fundamentally concurrency is about separating data by dependencies.
Dependency graphs that pass data around combined with lock free data structures can be used to isolate parts of the program so that dealing with concurrency is one generic part of the program.