The biggest difference is that Rust doesn't force a specific one on you. The language knows nothing about threads. It does have two special traits, Sync and Send, that should be used by any thread-related APIs for concurrency guarantees, and the stdlib thread API does use them.
But there are other concurrency/paralellism models beyond std::thread, including really cool stuff like "scoped threads", and more classic "single threaded event loop" stuff, or thread pools.
The big differentiator is that Rust proves code free from data races at compile time. Not the specific model.
Incidentally, you can write NIFs in Rust...