I wish I remember who I first heard say "everyone agrees shared mutable state is evil. Most languages deal with this problem by controlling the 'mutable.' Rust deals with this by controlling the 'shared.'
Message passing is another way of dealing with the 'shared,' too. But especially with the new RFC that just landed, Rust has some pretty amazing capabilities in this space that should make it incredibly useful for concurrency. And because it's based in the type system, not the language itself, you can take advantage of that safety and write your own concurrency abstraction with the same guarantees, esentially for free.